牛哇牛哇
转载: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)')
运行结果:有效!