Sql 选择[…]其中X在@variable中

Sql 选择[…]其中X在@variable中,sql,sql-server,sql-server-2008,select,Sql,Sql Server,Sql Server 2008,Select,可能重复: 我拥有对数据库的只读访问权限,我希望在该数据库上执行以下操作: DECLARE @var AS INT_COLLECTION = (1,2,3) SELECT name,column FROM table WHERE column IN @var 当然,INT_集合不存在,但是SQLServer2008中是否有类似的集合?或者另一种不需要对数据库进行写访问的方法?这是一种非常繁重的方法,因为您必须创建用户定义的表类型,但它确实有效: CREATE TYPE INT_COLLECT

可能重复:

我拥有对数据库的只读访问权限,我希望在该数据库上执行以下操作:

DECLARE @var AS INT_COLLECTION = (1,2,3)
SELECT name,column
FROM table
WHERE column IN @var

当然,INT_集合不存在,但是SQLServer2008中是否有类似的集合?或者另一种不需要对数据库进行写访问的方法?

这是一种非常繁重的方法,因为您必须创建用户定义的表类型,但它确实有效:

CREATE TYPE INT_COLLECTION AS TABLE (
  Value Int
);
GO

DECLARE @var AS INT_COLLECTION;
INSERT INTO @var (Value)
VALUES (1), (2), (3);

SELECT name, col
FROM YourTable
WHERE col IN (SELECT Value FROM @var)

这是一种非常繁重的方法,因为您必须创建用户定义的表类型,但它确实有效:

CREATE TYPE INT_COLLECTION AS TABLE (
  Value Int
);
GO

DECLARE @var AS INT_COLLECTION;
INSERT INTO @var (Value)
VALUES (1), (2), (3);

SELECT name, col
FROM YourTable
WHERE col IN (SELECT Value FROM @var)

你可以这样做:

DECLARE @var AS TABLE (IDS INT);
INSERT INTO @var  VALUES (1),(2),(3);

SELECT name,column
FROM table
WHERE column IN ( SELECT IDS FROM @var)

你可以这样做:

DECLARE @var AS TABLE (IDS INT);
INSERT INTO @var  VALUES (1),(2),(3);

SELECT name,column
FROM table
WHERE column IN ( SELECT IDS FROM @var)

这经常出现。可悲的是,这样做不起作用:谢谢你结束我的问题-如果是重复的,你能给我指出另一个吗?我没有关闭它,但重复的问题链接出现在标题下方的顶部。希望能有帮助。顺便说一句,你确实收到了两个有效的答案,你应该尝试一下。这经常出现。可悲的是,这样做不起作用:谢谢你结束我的问题-如果是重复的,你能给我指出另一个吗?我没有关闭它,但重复的问题链接出现在标题下方的顶部。希望能有帮助。顺便说一句,您确实收到了两个您应该尝试的有效答案。或者从值1,2,3 Vid中选择ID中的WHERE列,或者从值1,2,3 Vid中选择ID中的WHERE列。我认为,从用户定义表类型中没有提到,因为OP正在使用查询中提到的用户定义表。是吗?@StackOverflowUser对不起,我不理解这个评论。我想这个问题指定得有点不好-我需要传入一个参数变量,它是一个可变大小的整数列表,而不是字符串,尽管如果它们在某个时候变成字符串,我想这是可以的,性能在这里不会成为问题。创建表只是将问题向上移动了一个级别—如何传递创建表所用的整数列表?另外,如果我只有读取权限,我可以创建一个表吗?我想,用户定义的表类型中没有提到它,因为OP使用的是查询中提到的用户定义的表。是吗?@StackOverflowUser对不起,我不理解这个评论。我想这个问题指定得有点不好-我需要传入一个参数变量,它是一个可变大小的整数列表,而不是字符串,尽管如果它们在某个时候变成字符串,我想这是可以的,性能在这里不会成为问题。创建表只是将问题向上移动了一个级别—如何传递创建表所用的整数列表?另外,如果我只有读取权限,我可以创建一个表吗?