#oracle #sqldatatypes
#Oracle #sqldatatypes
Вопрос:
У меня проблема с типом данных и связью между двумя таблицами давайте предположим, что у меня есть две таблицы, как показано на рисунке
- Первая таблица: прикрепленный _file. Идентификатор coulmn — это число
- Вторая таблица: FN_Transaction. идентификатор coulmn равен varchar(20)
Идентификатор в FN_Transaction имеет четыре случая
- Идентификатор равен нулю, что означает отсутствие вложенного файла
- Идентификатор содержит текст в виде ячейки «Нет», что означает, что вложенного файла нет
- Идентификатор начинается с 0, но он будет равен идентификатору в прикрепленной таблице _file, например 01222 = 1222
- Идентификатор в FN_Transaction равен идентификатору в прикрепленном _file без 0, например, 2344 = 2344
давайте посмотрим на запрос
with docs as
(
SELECT
ID,
COUNT(type) fileNo,
MAX(Date) date
FROM
Attached_file
GROUP BY
ID
)
Select
InvoiceNo,
fileNo,
date,
Amount
from
FN_transaction x1
left join docs x2 on
(Trim(x1.ID) = x2.ID)
ошибка, которую я получил
Отчет об ошибке — ошибка SQL: ORA-12801: ошибка, о которой сигнализировал сервер параллельных запросов P034, (1) ORA-01722: недопустимый номер 12801. 00000 — «ошибка, о которой сигнализировал сервер параллельных запросов %s» * Причина: сервер параллельных запросов достиг состояния исключения. * Действие: проверьте причину следующего сообщения об ошибке и обратитесь к руководству по исправлению ошибок для соответствующего действия.
Есть ли у вас представление о том, как обрабатывать столбцы такого типа? Пожалуйста, сообщите
Ответ №1:
Вы можете использовать default on conversion error
предложение в TO_NUMBER
функции (введенное в 12.2) следующим образом:
ON ( to_number(X1.ID default null on conversion error) = X2.ID )
Обратите внимание, что это 01222
будет автоматически преобразовано в число 1222
. символ NO
будет преобразован в NULL
because of default on conversion error
и не будет соответствовать условию соединения (которое удовлетворяет вашему требованию)
Комментарии:
1. Спасибо за ответ, я попытался применить этот синтаксис, но получил другую ошибку. поэтому я не уверен, что ошибка связана с круглыми скобками или моей старой версией
2. 00907. 00000 — «отсутствует правая скобка»
3. Версия 4.1.3.20