2

我正在尝试使用列数据类型 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子句中使用它:

不合法的识别符

4

2 回答 2

4

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

select  * 
from PAT 
where ID = 1.234

数字不能用单引号括起来。在 SQL 中,小数分隔符是.

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

于 2015-02-04T07:07:17.870 回答
0

子查询可能会起作用:

select  * from PAT where ID IN (Select TO_NUMBER ('1,234', '9G999',
   'nls_numeric_characters = ''.,''') as from Dual;
于 2015-02-04T07:19:20.993 回答