Oracle - WHERE 子句中的列 NUMBER(38) - 数据有逗号



我正在尝试查询一个在列数据类型 NUMBER(38) 上带有 where 子句的表。由于它是一个数字(如下格式所示),这不起作用

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子句中使用它,因为我得到:

无效的标识符

不要将字符串用于数字。使用适当的数字常量:

select  * 
from PAT 
where ID = 1.234

数字不得括在单引号中。在 SQL 中,小数点分隔符是一个.

有关更多详细信息,请参阅手册:https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF00220

子查询可能有效:

select  * from PAT where ID IN (Select TO_NUMBER ('1,234', '9G999',
   'nls_numeric_characters = ''.,''') as from Dual;

相关内容

最新更新