如何将 SQL 比较条件 ANY/SOME 与 DATATYPE Char 一起使用
Posted
技术标签:
【中文标题】如何将 SQL 比较条件 ANY/SOME 与 DATATYPE Char 一起使用【英文标题】:How do I use the SQL Comparison Condition ANY/SOME with the DATATYPE Char 【发布时间】:2021-04-26 10:27:42 【问题描述】:我是 SQL 新手,不知道如何将 ANY 运算符与两个字符串一起使用。
我想得到匹配两个字符串之一的结果。 我知道使用我已经做过的 IN/OR 可以轻松实现结果,但我们被要求对 ANY 做同样的事情。
我的代码如下所示:
SELECT * FROM table WHERE column = ANY ('ASD 357','GHJ 680')
我总是收到此错误消息:
SQL0104N 在下面发现了一个意外的标记“'ASD 357'” “column = ANY(”。预期的标记可能包括:“”。 SQLSTATE=42601
我必须做些什么才能让它工作?
【问题讨论】:
您应该对ANY
运算符使用子查询。查看link 获取教程。
【参考方案1】:
问题不是ANY
,而是列表。你要IN
:
SELECT *
FROM table
WHERE column IN ('ASD 357', 'GHJ 680');
也就是说,这对于整数列也会失败:
WHERE column = ANY (1, 2, 3)
ANY
如果你有一个子查询就好了:
WHERE column = ANY (SELECT x FROM y)
【讨论】:
只有 INTEGER 才有可能包含值的列表吗?因为 ANY 也可能像这样“SELECT empno, sal FROM emp WHERE sal > ANY (2000, 3000, 4000);”来源:link @Deno123 该链接适用于 Oracle,而不是 DB2。 SQL 标准仅定义VALUES
完成(至少在DB2 中),所以WHERE column = ANY (VALUES 'ASD 357','GHJ 680')
可以工作。但 Gordon Linoff 的解决方案肯定适用于任何地方。以上是关于如何将 SQL 比较条件 ANY/SOME 与 DATATYPE Char 一起使用的主要内容,如果未能解决你的问题,请参考以下文章