【发布时间】:2019-08-27 03:47:59
【问题描述】:
我正在尽力避免使用游标。 nvarchar 变量中有一个逗号分隔的列列表,如下所示:
@columnList = 'col1,col2,col5'
有一张表有很多 varchar 列:
myTable: [col1],[col2],[col3],[col4],[col5],[col6],[col7]
这就是我使用动态 sql 选择数据的方式:
exec ('select ' + @columnList + ' from myTable')
此查询返回以下结果:
[col1], [col2] , [col5]
null , "txt1" , null
"txt2", null , null
null , "txt3" , "txt4"
这是我需要得到的:
@resultList = "txt1,txt2,txt3,txt4"
如何选择仅包含非空值的逗号分隔字符串?我知道如何将表格转换为逗号分隔的字符串,所以得到类似:
[column]
"txt1"
"txt2"
"txt3"
"txt4"
也不错。有什么建议?随意提出一个基本的方法,我不希望你为我编写实际的代码。
【问题讨论】:
-
联合所有非空值以获得第二个选项。
-
exec ('select ' + @columnList + ' from myTable')是个坏主意。 SQL 注入不是你的朋友。 -
哪个 sql server 版本?
-
@columnList正在使用另一个查询的服务器上生成。没有人可以在那里注入一些东西。请随意提出更好的方法。 -
Mssql 2016 v13.0.x
标签: sql sql-server tsql sql-server-2016 dynamic-sql