例如,我有一个字符串参数 @p_colors
,值类似于:
'yellow','blue','red'
将传递到存储过程中。当我尝试这样选择时:
EXECUTE(CONCAT('SELECT ', @p_colors));
结果是通过列选择值。
No column name | No column name | No column name
------------------------------------------------
Yellow | Blue | Red
如果我想这样的行显示它们,我该怎么做:
No column name |
----------------
Yellow |
----------------
Blue |
----------------
Red |
----------------
仅使用字符串格式的参数。SQL有什么办法可以做到这一点?
编辑:
实际结果将插入临时表中,因此实际代码为:
EXECUTE('INSERT INTO #colors(color) SELECT ', @p_colors);
您可以如下:
SELECT * FROM (VALUES('yellow'), ('blue'), ('red')) t(c)
更新:
DECLARE @Param NVARCHAR(MAX) = '''yellow'', ''red'', ''blue'''
DECLARE @Query NVARCHAR(MAX)
SELECT @Query = 'SELECT * FROM (VALUES(' + REPLACE(@Param, ''',', '''),(') + ')) t(c)'
--SELECT @Query
EXEC sp_executesql @Query