按确切数字选择 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 子句的主要内容,如果未能解决你的问题,请参考以下文章

条件 Where 子句比较数字值(如果它是数字)或字符串值(如果它不是数字)

SELECT FROM Table WHERE 不部分的确切数字在字符串 SQL 中

简单选择语句的where子句中的MySQL未知列

JPA,Hibernate和Spring Data:在MS SQL服务器上的where子句中将字符串转换为数字

在 jdbc 中使用 where in 子句

在 where 子句中使用 Oracle SQL 变量时遇到问题