按确切数字选择 where 子句

Posted

技术标签:

【中文标题】按确切数字选择 where 子句【英文标题】:Select where clause by exact numbers 【发布时间】:2013-10-31 02:07:32 【问题描述】:

当我的 COLUMN1 数据类型为 CHARACTER 时,我可以使用 WHERE CLAUSE IN:

从表 1 中选择 *
WHERE COLUMN1 IN ('A', 'B', 'C'); 

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

从表 2 中选择 *
WHERE COLUMN2 IN (1,2,3);

我知道有一个 BETWEEN,但它不能满足我的需要,因为我不是在 Range 中选择,而是在 Exact number series 中选择。

谢谢。

【问题讨论】:

两个选择都应该可以正常工作。 是的。你说的对。这是我的错。谢谢。 【参考方案1】:

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

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

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

注意常量的类型是正确的。

【讨论】:

以上是关于按确切数字选择 where 子句的主要内容,如果未能解决你的问题,请参考以下文章