Sql Server 的FOR XML PATH(‘‘)函数用法

转自:

https://blog.csdn.net/wang_xinyu/article/details/107365392

https://www.cnblogs.com/TulipsWill/p/11498859.html

1. 如下表:

2. 转换xml

1

select name from zz FOR XML PATH('root');

1

ps: FOR XML PATH('root')中root是xml根节点。<br><br><br><br>

 3. 加个分隔符和去掉根节点。

1

select '、' + name from zz FOR XML PATH('');

 4. 配合stuff函数使用,去掉第一个分隔符号。

1

select STUFF((select '、' + name from zz FOR XML PATH('')),1,1,'');

5. STUFF ( character_expression , start , length ,character_expression ) 

  character_expression:字符数据

  start :指定删除和插入的开始位置

  length :指定要删除的字符数

  character_expression : 替换start 到 length 的字符数据

6. 转义字符正常显示

有时候我们的数据库中有尖括号,然后有用到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,'')

结果:

猜你喜欢

转载自blog.csdn.net/chpllp/article/details/107420233
今日推荐