【发布时间】:2019-04-03 17:34:02
【问题描述】:
我正在尝试从表中获取多个值并将其作为逗号分隔值存储在单个变量中,以便我可以将该变量用作不同选择语句中的参数。
这是 SQL 查询:
DECLARE @AccCode VARCHAR(MAX)
SELECT @AccCode = AccCode FROM Account WHERE (*some condition*) --returns more than 1 value
SELECT * FROM AccountSet WHERE AccCode IN (@AccCode)
问题是从第一个选择查询返回的所有值都没有存储在@AccCode 变量中。相反,只有第一个返回值被存储。
我不确定我是否遗漏了什么。任何帮助,将不胜感激。
提前谢谢..!!
【问题讨论】:
-
即使更正第二条语句以将所有值存储为分隔字符串,第三条语句也不是有效选项。
-
@Luis 如果第二个语句以逗号分隔的字符串返回值,那么第三个语句应该返回结果对吗?如果第二个语句返回 '1,2,3' 作为结果,则第三个语句将是 'SELECT * FROM AccountSet WHERE AccCode IN ('1,'2','3')'。如果我错了,请纠正我..
-
不,第三个语句是
SELECT * FROM AccountSet WHERE AccCode IN ('1,2,3'),它是一个单一的值。要将分隔字符串用作值数组,您需要使用字符串拆分器或动态 sql 的错误选项。您还可以更改方法并使用表变量来存储值,而不是使用字符串变量。
标签: sql-server