【发布时间】:2011-12-26 15:39:23
【问题描述】:
我知道我在这里使用动态 SQL 违反了一些规则,但我仍然需要询问。我继承了一个表,其中包含我需要从中提取记录的每张票的一系列标签。
简单示例...我有一个包含“'Apples','Oranges','Grapes'”的数组,我正在尝试检索包含数组中包含的 ALL 项的所有记录.
我的 SQL 如下所示:
SELECT * FROM table WHERE basket IN ( " + fruitArray + " )
当然相当于:
SELECT * FROM table WHERE basket = 'Apples' OR basket = 'Oranges' OR basket = 'Grapes'
我很好奇是否有一个函数与 IN (array) 的工作方式相同,只是它使用 AND 而不是 OR,以便我可以获得与以下相同的结果:
SELECT * FROM table WHERE basket LIKE '%Apples%' AND basket LIKE '%Oranges%' AND basket LIKE '%Grapes%'
我可能只是手动生成整个字符串,但如果可能的话,我想要一个更优雅的解决方案。任何帮助将不胜感激。
【问题讨论】:
-
简短回答。不。您可以构建子查询,但我认为这不是您要问的。
-
IN不是一个函数。它是一个运算符。 -
basket列是什么类型? -
VARCHAR(512) 我确实将它设置为索引文本,但它太慢了,不值得。
标签: sql-server tags where sql-match-all