2013-03-26 159 views
0

如何转换这样的:将逗号分隔的值列表转换为单个逗号分隔的字符串?

('xxx','yyy','zzz') 

进入这个:

('xxx,yyy,zzz') 

使用T-SQL?

+1

这个第一个值来自哪里?它是*一个字符串*? – 2013-03-26 16:54:49

+0

作为一组参数?我不明白。你如何将一组参数传递给SQL Server,并期望它将其解释为单个字符串? – 2013-03-26 16:57:09

+1

它是一组输入参数 - 类型nvarchar(30) – 2013-03-26 16:57:16

回答

0

通过连接值(这意味着单个列)?

SELECT (col1 + ',' + col2+ ',' + col3) 
FROM tableName 
+0

该列表来自外部作为一组参数。 。 – 2013-03-26 16:56:24

+0

一组参数?也许@AaronBertrand的回答会帮助你解决这个问题。 – 2013-03-26 16:57:49

1
DECLARE @x VARCHAR(32) = '''xxx'',''yyy'',''zzz'''; 
SELECT REPLACE(@x, ''',''', ','); 

如果你想要做的是串联,那么你可以这样做:

SELECT @param1 + ',' + @param2 + ',' ... + @param30; 

然而这仅仅是愚蠢恕我直言。这就像分别清洗每一只袜子一样。

我不得不质疑你现在要做什么,如果这些是独立的实体,为什么他们在第一个地方逗号分隔?也许你应该看看table-valued parameters而不是这个逗号分隔值的废话,那么你可以从一开始就以基于集合的方式使用这些值。

+0

我..好的...它并不那么简单。我使用模板和模板值生成查询。一些模板值来自不同的数据源,并通过代码组合在一起。最终脚本如下所示:“从TableA中选择A,B,C,其中A为('xxx','yyy','zzz')”。在大多数情况下,这已经足够了。 – 2013-03-26 17:04:02

+0

但是有时候我们需要做一些类似于:“Select * from TableB where B ='xxx,yyy,zzz'” – 2013-03-26 17:05:26

+0

所以为了不改变生成脚本的逻辑,我正在寻找一种方法来连接这些“参数“在SQL服务器端运行。 – 2013-03-26 17:06:20