SQL Where子句将列表传递给列

jcv*_*gan 1 sql-server sql-server-2008 sql-server-2008-r2

我有一些表DOCUMENTS有一个列TYPE_ID和一个名为TYPES Now 的表我希望进行一个查询过滤我的DOCUMENTS所有文档,其中包含一个列表TYPE_ID,可以是单个元素或一类元素

正常查询是:

Select * From DOCUMENTS Where TYPE_ID = myValue
Run Code Online (Sandbox Code Playgroud)

但是当它可以是wuery看起来像已知元素的列表时

Select * From DOCUMENTS Where TYPE_ID = myValue1 or TYPE_ID = myValue2 or TYPE_ID = myValue3
Run Code Online (Sandbox Code Playgroud)

但是如果你有n个元素......这个查询怎么办呢?

EBa*_*arr 9

你想要IN条款:

SELECT *
FROM  Documents 
WHERE Type_ID IN (myValue1, myValue2, myValue3)
Run Code Online (Sandbox Code Playgroud)

作为旁注,如果您对本条款熟悉,则不能执行以下操作:

@myVar = '1,2,3'
select * FROM Documents where Type_ID in (@myVar)
Run Code Online (Sandbox Code Playgroud)

有这样的解决方案.但我指出它是因为当人们不熟悉IN条款时似乎会出现这种情况.