在SQL Server中选择一个按ROW的字符串格式化数组



例如,我有一个字符串参数 @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

相关内容

最新更新