我有一些样本数据,如
CREATE TABLE #Employee
(Id INT, Name NVARCHAR(100), Status TINYINT)
GO
INSERT INTO #Employee ( Id, Name, Status)
Values (1, '&Basavaraj Biradar', 0),
(2, 'Shree Biradar', 0),
(3, '&Kalpana Biradar', 0),
(4, '& ', 0)
GO
当没有特殊字符时它会变得很好但是当字符像 - 或&amp ;.它不会来
错误显示为
Msg 9411, Level 16, State 1, Line 2
XML parsing: line 1, character 14, semicolon expected
我的查询是这样的:
select cast('<N>'+replace(replace(replace(Name, ' ', '</N><N>'),' ', '</N><N>'),'-','-</N><N>') +'</N>' as xml) from #Employee
当name具有普通字符串时,它工作正常,但不适用于特殊字符。 建议我
答案 0 :(得分:2)
“&”是XML中的特殊字符,因此您需要将其转义。请改用&
。
按照现有代码中的模式,将Name
字段引用替换为replace(Name, '&', '&')
更新后的查询
select cast('<N>'+replace(replace(replace( replace( Name, '&', '&') , ' ', '</N><N>'),' ', '</N><N>'),'-','-</N><N>') +'</N>' as xml) from #Employee
我得到了这个结果
<N>&Basavaraj</N><N>Biradar</N>
<N>Shree</N><N>Biradar</N>
<N>&Kalpana</N><N>Biradar</N>
<N>&</N><N />
答案 1 :(得分:0)
试试这样:
CREATE TABLE #Employee
(Id INT, Name NVARCHAR(100), Status TINYINT)
GO
INSERT INTO #Employee ( Id, Name, Status)
Values (1, '&Basavaraj Biradar', 0),
(2, 'Shree Biradar', 0),
(3, '&Kalpana Biradar', 0),
(4, '& ', 0)
GO
select cast('<N>'+replace(replace(Name,'&','&'), ' ', '</N><N>') +'</N>' as xml) from #Employee
--DROP TABLE #Employee