按精确数字选择where子句

时间:2013-10-31 02:07:33

标签: sql postgresql

当我的COLUMN1数据类型为CHARACTER:

时,我可以使用WHERE CLAUSE IN
SELECT * FROM TABLE1 
WHERE COLUMN1 IN ('A', 'B', 'C'); 

但是当我的COLUMN2数据类型为NUMERIC时,当我尝试使用WHERE CLAUSE IN时,我将出现语法错误。如下声明:

SELECT * FROM TABLE2 
WHERE COLUMN2 IN (1,2,3);

我知道有一个BETWEEN,但它不能满足我的需要,因为我没有在Range中选择但是在精确的数字系列中。

感谢。

1 个答案:

答案 0 :(得分:1)

我能想到的一个问题是column1不是数字类型。当您尝试与整数进行比较时(例如使用in),这将返回错误。

您可以尝试以下方法来模仿错误:

select *
from (select cast('1' as varchar(255)) as val) t1
where val in (1, 2);

小心使常量成为正确的类型。