SQL SERVER 不转义拼接字符

白昼怎懂夜的黑 提交于 2019-12-25 17:06:16

--例子:

left join (
	select in_a.BaseChgNo,stuff((
		select ','+in_b.EmpCode
		from tBaseChgStakeholder in_b
		where in_a.BaseChgNo=in_b.BaseChgNo
		for xml path(''), type
		).value('.', 'NVARCHAR(MAX)'),1,1,'') EmpCodes
	from tBaseChgStakeholder in_a
	group by in_a.BaseChgNo
) g on g.BaseChgNo=f.No
输出
BaseChgNo EmpCodes
JZ000001 00404,00473
JZ000002 00404,00473
JZ000003 00014,00013
JZ000004 00006,00007

--STUFF字符串函数是将字符串插入到另一个字符串中。
--它会删除开始位置第一个字符串中的指定长度的字符,然后将第二个字符串插入到开始位置的第一个字符串中。
STUFF(<character_expression>,<开始>,<长度>,<character_expression>)


--利用FOR XML PATH则返回XML格式的字符串,添加type参数不转义,例:
select    (SELECT 'ab<&c'  FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)')

参考:

SQL Server之深入理解STUFF

for XML path 转义 使用心得

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!