【发布时间】:2011-07-15 20:32:59
【问题描述】:
我需要检查 SQL 数组中是否存在多个值中的一个(或多个)。 最简单的形式是这样的:
SELECT
(1, 7, 8) IN (1, 2, 3, 4, 5)
FROM DUAL
显然这个说法是行不通的。只有在我检查数组中的一个值时它才有效。但我需要知道我提供的一个(不是全部!)值是否存在于 SQL 数组中。如果数组中存在一个或多个值,则该语句应返回 TRUE,如果没有,则应返回 FALSE。
我意识到我可以像这样添加几个检查:
SELECT
1 IN (1, 2, 3, 4, 5)
OR 7 IN (1, 2, 3, 4, 5)
OR 8 IN (1, 2, 3, 4, 5)
FROM DUAL
然而,我的编程逻辑以数组格式“(1,7,8)”提供值,并且每次我需要运行 SQL 语句时,该数组中的值的数量都会有所不同。如果我能以某种方式将这个数组粘贴到我现有的 SQL 语句中,而不是在每次运行时重新构建 SQL 语句,并为数组中的每个值创建“OR”语句,那将非常方便。
有没有办法做到这一点?顺便说一句,我正在使用 MySQL。
提前感谢,继续保持良好的编程!
【问题讨论】:
-
您的“编程逻辑”是否有可能传递一个表,因为 SQL 最适用于表,而不是分隔列表?
-
这张桌子会是什么样子?如果它类似于: SELECT (1,7,8) FROM DUAL 那么这是可能的,但我可以将其构建到 SQL 语句中。我仍然看不到如何测试 SQL 数组的值。
-
在 .net 中类似于
datatable或数组。逗号分隔的列表不是数组,而是字符串。 -
为什么需要在 (My)SQL 中评估它?
-
我明白这一点,但我想将这些值粘贴到现有的 SQL 语句中,因此我将数组转换为逗号分隔的列表。