有时候我们的数据库中有尖括号,然后有用到xml的时候,sql会自动的把尖括号进行转义,但是我们不需要转义,并且对这个有要求要用到,这时候我们可以用value的形式来实现,测试数据:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[Chemistry] nvarchar(47))
Insert #T
select 1,N'CaF<sub>2</sub>' union all
select 2,N'Al<sub>2</sub>O<sub>3<?sub>'
Go
--测试数据结束
用for xml path读取指标信息
SELECT
STUFF((
Select ','+Chemistry from #T FOR XML PATH('')),1,1,'')
读取的结果是这样的:
我们看到尖括号已经进行了转义,如果我们还想要尖括号,可以这样写:
SELECT
STUFF((
Select ','+Chemistry from #T FOR XML PATH(''),TYPE
).value('.','NVARCHAR(MAX)'),1,1,'')
结果:
这样的结果已经是不再转义的了。