的SQL Server 2005SQL任何1列出第二
我有2所列出:
( 'A', 'B', 'C', 'd')
( 'd', 'E', 'F', 'G')
我需要做一个WHERE这些2第一个动态SQL字符串中,是这样的:
select *
from tbl
where ... afewconditionshere ...
AND anyitemfrom[('a', 'b', 'c', 'd')] is inside [('d', 'e', 'f', 'g')]
它看起来有点怪异,但我得到来自第三方这些数据,不能使太大的变化
名单总是有< 20个项目里面
UPDATE
一个, b,c,d,e,f,g就像是与表格无关的安全事物,这个想法是,如果你有这个anyitemfrom [('a','b','c','d' )]在[('d','e','f','g')]内,那么您可以查看返回的记录,否则不应该返回记录
是这个条件应该基本返回true或false
这两个列表是来自外部的数据(数据未在数据库中找到)的东西吗?如果是这样,这些条件应该在SQL的外部得到满足,而不是附加为新条件。 (除非我误解了这个问题)。但是,SQL确实有'IN'子句。例如'WHERE mycolumn IN('a','b','c','d') – 2011-12-21 15:25:30
如果您正在动态构建SQL,并且在准备动态SQL时您的程序已知这两个列表的内容字符串,是不是'anyitemfrom [('a','b','c','d')]在[('d','e','f','g')]'condition减少到一个简单的“真”或“虚假”的答案?我错过了什么吗? – dasblinkenlight 2011-12-21 15:27:53
@Swoosh:是否有任何项目与数据库相关?如果没有,为什么你想在SQL中做到这一点? – 2011-12-21 16:08:54