SQL是否具有可在WHERE ... IN子句中使用的列表类型?

时间:2010-01-15 15:04:06

标签: sql tsql

  

可能重复:
  Parameterizing a SQL IN clause?
  SQL Server SP - Pass parameter for “IN” array list?

我需要在两个不同的表上搜索偶然的整数集:

SELECT 
  col_1, col_2 
FROM 
  LIKES_NUMBERS 
WHERE 
  col_1 IN (1,2,3,5,7,1021,10041411)

SELECT 
  col_one, col_two 
FROM 
  LIKES_NAMES 
WHERE 
  col_one IN (1,2,3,5,7,1021,10041411)

是否有可以传递给IN的SQL列表类型,以便我不重复自己? E.G。

DECLARE @stuff UNOBTAINIUM(1,2,3,5,7,1021,10041411)
-- ...
WHERE col_1 IN (@stuff)
-- ...
WHERE col_one IN (@stuff)

想到创建一个临时表,但这看起来很残酷。

4 个答案:

答案 0 :(得分:2)

是的,您可以使用table variable。它就像一个临时表,但是本地范围。

答案 1 :(得分:2)

答案 2 :(得分:1)

没有列表类型。临时表应该没问题,或者你可以使用表变量。

答案 3 :(得分:1)

使用MS-SQL时,我倾向于使用XML文档,可以很容易地从非SQL客户端传递(我认为不像临时表),并且可以通过MS-SQL的T-SQL语法查询。