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

牛哇牛哇
转载: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)')

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

おすすめ

転載: blog.csdn.net/Mimo_YY/article/details/118419218