Oracle - столбец NUMBER(38) в предложении WHERE - данные имеют запятую
Я пытаюсь запросить таблицу с предложением where для типа данных столбца NUMBER(38) . Так как это НОМЕР (как показано в следующем формате), это не будет работать
SELECT * FROM PAT WHERE ID='1,234'
Поэтому я преобразовал строку, используя TO_NUMBER & NLS_NUMERIC_CHARACTERS
SELECT TO_NUMBER ('1,234', '9G999',
'nls_numeric_characters = ''.,''') AS FROM Dual;
выход: 1,234
Но я не уверен, как использовать это в WHERE
пункт как я получаю:
НЕВЕРНЫЙ ИДЕНТИФИКАТОР
2 ответа
Решение
Не используйте строки для чисел. Используйте правильную числовую константу:
select *
from PAT
where ID = 1.234
Числа не должны быть заключены в одинарные кавычки. В SQL десятичный разделитель является .
См. Руководство для получения дополнительной информации: https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm
Возможно, подзапрос может работать:
select * from PAT where ID IN (Select TO_NUMBER ('1,234', '9G999',
'nls_numeric_characters = ''.,''') as from Dual;