SQL语句--for xml path(‘‘) 特殊符号转码问题

本文介绍了在SQL SERVER中使用FORXML PATH时遇到的特殊符号转码问题,并提供了一个有效的解决方法。通过在查询中添加SELECT子句,配合ROOT和TYPE选项,可以避免特殊符号被转码,从而正确显示数据。测试结果显示,这种方法对于包含特殊符号的数据能够正常处理。
摘要由CSDN通过智能技术生成

牛哇牛哇
转载:for xml path(’’) 特殊符号转码问题

----代码部分稍微做了调整(针对SQL SERVER)
IF OBJECT_ID('tempdb..#Temp_Testxml') IS NOT NULL 
BEGIN 
  DROP TABLE #Temp_Testxml
END 
GO


CREATE TABLE #Temp_Testxml(
	Title varchar(200))
 
INSERT INTO #Temp_Testxml VALUES('Benefits Administration Software')
INSERT INTO #Temp_Testxml VALUES('<Benefits Program Design>')
INSERT INTO #Temp_Testxml VALUES('Budget Administration')
INSERT INTO #Temp_Testxml VALUES('Compensation & Benefit')
INSERT INTO #Temp_Testxml VALUES('Compensation Management Software')
INSERT INTO #Temp_Testxml VALUES('Compensation Program Design')
INSERT INTO #Temp_Testxml VALUES('Health & Welfare Benefits')
INSERT INTO #Temp_Testxml VALUES('HR Regulatory Compliance')
INSERT INTO #Temp_Testxml VALUES('Incentive Programs')
INSERT INTO #Temp_Testxml VALUES('Retirement Benefits')
INSERT INTO #Temp_Testxml VALUES('test skill1')
 
 ---这是普通查询
SELECT Title FROM #Temp_Testxml FOR XML PATH ('')

---这是修缮后的查询
SELECT  
   (SELECT '|' + Title FROM #Temp_Testxml a FOR xml path(''),root('MyString'),type).value('/MyString[1]','varchar(max)')

看不太懂这个解决方法,但确实很有效,棒!
运行结果对比:
在这里插入图片描述
普通的查询会把一些符号转化;
经过修缮后的查询,可以正常显示出来!

有看懂的同志,希望棒解释一下,这句的意思,谢谢~

  select......   ,root('MyString'),type).value('/MyString[1]','varchar(max)')

然后自己也做了测试:

---这两步是在我的测试数据库表中造了些数据,以便待会儿我们做测试用
SELECT t1.DepartmentName FROM dbo.Department t1
UPDATE dbo.Department SET DepartmentName='<'+DepartmentName

----下面是对比检验,这种方法是不是通用的
SELECT t1.DepartmentName FROM dbo.Department t1 FOR XML PATH('')
SELECT (SELECT '|'+t1.DepartmentName FROM dbo.Department t1 FOR XML PATH(''),ROOT('MyString'),type).value('/MyString[1]','varchar(max)')

运行结果:有效!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值