这是用于Microsoft SQL Server 2016(SP1)-13.0.4001.0
我有一些烦人的数据,需要转换为逗号分隔的字符串。我的选择受到限制,因为它是一种第三方软件,可以代替我的查询中的文本并运行它。例如,我将编写以下内容:
SELECT %myvalues% for xml path('')
然后变成了:
SELECT 'test1','test2','test3'...'testn' for xml path('')
哪个返回
test1test2test3...testn
这有效,但是不会用逗号或空格分隔文本。这是我想要的结果:
test1, test2, test3, ... testn
问题是,我无法控制它如何插入文本。 我确实在许多其他解决方案中找到了STUFF函数,但是当我不知道列名时,似乎没有一个起作用。
例如,我得到:
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
答案 0 :(得分:0)
我不知道这是否是最好的方法,但是我成功使用了以下方法:
IF OBJECT_ID('mytable', 'U') IS NOT NULL DROP TABLE mytable;
CREATE TABLE mytable ("@remove@'mylist', 'Ofannoying', 'comma', 'seperated values'" INT NULL);
SELECT REPLACE(REPLACE((SELECT c.Name FROM sys.columns c INNER JOIN sys.objects o ON o.object_id = c.object_id WHERE o.name = 'mytable'), '''', ''), '@remove@', '')
我的实际代码如下:
CREATE TABLE mytable ("@remove@#myvalues#" INT NULL);