从SQL Server 2000上的IN子句返回所有值

1 sql-server union sql-server-2000

有没有办法从IN子句中检索所有数据?

我们假设我的桌子有(ID,名字):

0 Banana
1 Mango
2 Papaya
3 Lemon

和我的查询:

SELECT * FROM Fruits WHERE Name IN (Banana,Mango,Orange)
Run Code Online (Sandbox Code Playgroud)

我希望'Orange'返回,带有空ID(因为没有注册).这该怎么做?

Mar*_*ith 5

你不能使用这个IN条款.您需要将目标水果放入可以外连接的表中.

SELECT ...
FROM 
(SELECT 'Banana' AS fruit UNION ALL SELECT 'Mango' UNION ALL SELECT 'Orange') f 
LEFT JOIN Fruits ON Fruits.Name = f.fruit
Run Code Online (Sandbox Code Playgroud)

或选项2(只要您的列表<= 8000个字符).像这里创建一个UDF (但使用varchar(8000)而不是varchar(max)).然后按如下方式使用它.

SELECT ...
FROM dbo.fnSplitStringList('Banana,Mango,Orange') f 
LEFT JOIN Fruits ON Fruits.Name = f.StringLiteral
Run Code Online (Sandbox Code Playgroud)