将 XML 的块插入 SQL XML 字段
Inserting Block of XML into SQL XML Field
我的 tabled 中有一个名为 Details
的字段,其中包含用户可以填写的 xml
可选字段字符串,如下所示:
<optional>
<name>Value</name>
<account>123</account>
</optional>
我正在尝试将 xml
的块插入查询中的该字段,如下所示:
SELECT SUBMITTEDON AS 'SubmitDate',
'coachingOpp' AS 'Type',
R.ReasonID AS 'reasonID',
'TLReview' AS 'status',
'Pending' AS outcome,
'<optional>' +
'<name>' + P.TICKET + '</name>' +
'<account>' + P.CUSTOMERACCOUNTNUMBER + '</account>' +
'</optional>' AS 'Details',
ISNULL(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P.REQUESTDETAILS + ' --- ' + P.[MESSAGE], '&', '&'), '<', '<'), '>', '>'), '"', '"'), '''', '''),'No PET Data Available')
如果我删除代码的 INSERT
部分并只保留 select,它会正常显示所有记录。但是,当我尝试从 select 语句插入记录时,出现以下错误:
Msg 9421, Level 16, State 1, Procedure InsertFeedback, Line 42
XML parsing: line 1, character 118, illegal name character
数据的 selecting 似乎 运行 没问题;尝试将该数据插入 table.
时出错
您需要转义 P.TICKET 和 P.CUSTOMERACCOUNTNUMBER 的内容。
但是,我会让 SQL 为您生成 XML 而不是手动生成。
SELECT Ticket name, CUSTOMERACCOUNTNUMBER ticket FOR XML PATH(''), ROOT('Optional')
可以是子查询或使用交叉应用。
这是对您的问题最简单的回答。你必须将字符串转换成 xml like.
declare @xmlstring varchar(200) = '<optional>
<name>Value</name>
<account>123</account>
</optional>'
declare @convertStringtoXml xml = cast ( @xmlstring as xml)
create table #t (xmlfld xml)
insert into #t values(@convertStringtoXml)
select * from #t
drop table #t
我的 tabled 中有一个名为 Details
的字段,其中包含用户可以填写的 xml
可选字段字符串,如下所示:
<optional>
<name>Value</name>
<account>123</account>
</optional>
我正在尝试将 xml
的块插入查询中的该字段,如下所示:
SELECT SUBMITTEDON AS 'SubmitDate',
'coachingOpp' AS 'Type',
R.ReasonID AS 'reasonID',
'TLReview' AS 'status',
'Pending' AS outcome,
'<optional>' +
'<name>' + P.TICKET + '</name>' +
'<account>' + P.CUSTOMERACCOUNTNUMBER + '</account>' +
'</optional>' AS 'Details',
ISNULL(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P.REQUESTDETAILS + ' --- ' + P.[MESSAGE], '&', '&'), '<', '<'), '>', '>'), '"', '"'), '''', '''),'No PET Data Available')
如果我删除代码的 INSERT
部分并只保留 select,它会正常显示所有记录。但是,当我尝试从 select 语句插入记录时,出现以下错误:
Msg 9421, Level 16, State 1, Procedure InsertFeedback, Line 42
XML parsing: line 1, character 118, illegal name character
数据的 selecting 似乎 运行 没问题;尝试将该数据插入 table.
时出错您需要转义 P.TICKET 和 P.CUSTOMERACCOUNTNUMBER 的内容。 但是,我会让 SQL 为您生成 XML 而不是手动生成。
SELECT Ticket name, CUSTOMERACCOUNTNUMBER ticket FOR XML PATH(''), ROOT('Optional')
可以是子查询或使用交叉应用。
这是对您的问题最简单的回答。你必须将字符串转换成 xml like.
declare @xmlstring varchar(200) = '<optional>
<name>Value</name>
<account>123</account>
</optional>'
declare @convertStringtoXml xml = cast ( @xmlstring as xml)
create table #t (xmlfld xml)
insert into #t values(@convertStringtoXml)
select * from #t
drop table #t