Sql server 将列连接成字符串
我认为我需要更好地理解XML路径,以使其正常工作。也许你能帮我举个简单的例子: 给定 我想把@phn.Phone中的所有行都改成一个VARCHAR,如果它只是Python的话,应该是Sql server 将列连接成字符串,sql-server,xml,tsql,xpath,Sql Server,Xml,Tsql,Xpath,我认为我需要更好地理解XML路径,以使其正常工作。也许你能帮我举个简单的例子: 给定 我想把@phn.Phone中的所有行都改成一个VARCHAR,如果它只是Python的话,应该是 SET @p = ', '.join(@phn.Phone) # Alas SELECT DISTINCT @p = Phone+', ' FROM @phn FOR XML PATH('') 现在,这个在一定程度上起作用: SELECT DISTINCT Phone+', ' FROM @phn FOR XM
SET @p = ', '.join(@phn.Phone) # Alas
SELECT DISTINCT @p = Phone+', ' FROM @phn FOR XML PATH('')
现在,这个在一定程度上起作用:
SELECT DISTINCT Phone+', ' FROM @phn FOR XML PATH('')
==> 204-721-1532, 204-728-3852, 306-922-2058,
后面有逗号,但没问题。我需要的是将这个结果放入一个VARCHAR变量中,比如
SET @p = ', '.join(@phn.Phone) # Alas
SELECT DISTINCT @p = Phone+', ' FROM @phn FOR XML PATH('')
但这是不允许的(msg6819,level16,state3,第45行/FOR-XML子句在赋值语句中是不允许的。)
最后,这将进入一个标量函数,我希望该函数返回连接的字符串。您不需要XML路径,只需选择即可
DECLARE @p VARCHAR(200)
DECLARE @phn TABLE (Phone VARCHAR(25))
INSERT INTO @phn VALUES('204-721-1532')
INSERT INTO @phn VALUES('306-922-2058')
INSERT INTO @phn VALUES('204-728-3852')
SET @p = ''
SELECT @p = @p + phone + ', ' from @phn
SELECT @P
如何处理空值取决于您。你可以
- 添加
合并(电话,”)
- 当phone不为null时,使用case语句
case,然后使用phone+',“ELSE”结束
- 使用where
where电话不为空
- 甚至是
,但这应该是不赞成的CONCAT\u NULL\u产生了\u NULL=OFF
- 我认为这就是您需要的: