我认为我需要更好地理解 FOR XML PATH 才能使其正常工作。也许您可以通过这个简单的示例帮助我:
给定
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')
我想将@phn.Phone 中的所有行更改为 VARCHAR,如果它只是 Python,则类似于
SET @p = ', '.join(@phn.Phone) # Alas
现在,这在一定程度上起作用:
SELECT DISTINCT Phone+', ' FROM @phn FOR XML PATH('')
==> 204-721-1532, 204-728-3852, 306-922-2058,
有那个尾随逗号,但那里没有问题。我需要的是将此结果转换为 VARCHAR 变量,例如
SELECT DISTINCT @p = Phone+', ' FROM @phn FOR XML PATH('')
但这是不允许的(消息 6819,级别 16,状态 3,第 45 行/ASSIGNMENT 语句中不允许使用 FOR XML 子句。)
最终,这将进入一个标量函数,我希望该函数返回连接的字符串。