假设我正在使用FOR XML子查询来允许连接和排序,此外,数据包含尖括号:
SELECT STUFF((SELECT ', ' + '<' + NAME + '>'
FROM [sys].[login_token]
ORDER BY NAME
FOR XML PATH('')), 1, 2, '') AS Logins;
输出类似于
<\Everyone>, <BUILTIN\Administrators>, <BUILTIN\Administrators>
我怎样才能解码它,就像这样:
<\Everyone>, <BUILTIN\Administrators>, <BUILTIN\Administrators>,
答案 0 :(得分:3)
您可以对XML进行查询并返回转换后的值!
SELECT STUFF((SELECT ', ' + '<' + NAME + '>'
FROM [sys].[login_token]
ORDER BY NAME
FOR XML PATH(''), type).value('.','NVARCHAR(MAX)')
, 1, 2, '') AS Logins;
您将, type
添加到FOR XML PATH
规范,然后将.value
添加到XQuery表达式和要转换为的数据类型!请参阅MSDN:
答案 1 :(得分:0)
你也可以使用2个replace
函数:
SELECT replace(replace(STUFF((SELECT ', ' + '<' + NAME + '>'
FROM [sys].[login_token]
ORDER BY NAME
FOR XML PATH('')), 1, 2, ''),'<','<'),'>','>') AS Logins;