创建表:
IF OBJECT_ID('Colortable') IS NOT NULL
DROP TABLE ColorTable
CREATE TABLE Colortable (Color VARCHAR(32))
GO
SET NOCOUNT ON
INSERT Colortable
SELECT 'red'
INSERT Colortable
SELECT 'orange'
INSERT Colortable
SELECT 'blue'
INSERT Colortable
SELECT 'green'
GO
自动创建我的变量(它将成为SSRS中的参数):
声明@colors VARCHAR(1024)
SELECT @colors =
COALESCE(
@colors + '''' + ',' + '''', '') +
Color
FROM Colortable
当我使用“Select@colors”时,我得到以下结果:
'red','orange','blue','green'
SELECT *
FROM colortable
WHERE Color IN ('red', 'orange', 'blue', 'green') -- Returns 4 rows.
SELECT *
FROM colortable
WHERE Color IN (@colors) -- Returns 0 Rows
有人能告诉我为什么吗?我正在尝试生成一个值字符串,这样这个脚本就可以在SSRS和SSMS(或我正在使用的任何工具)中工作。