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;
Другие вопросы по тегам