我正在读取 xml 并将其写入 sql 表
想把下面的xml插入到表中
Declare @MainXml XML = '<Parent> <Root> <Admin>admin1</Admin> <Data number="1"> <Type value="100"></Type> <Type value="200"></Type> </Data> </Root> <Root> <Admin>admin2</Admin> <Data number="1"> <Type value="300"></Type> <Type value="400"></Type> </Data> </Root> </Parent>'
I am trying to insert into table like this
Insert Into Table1(col1,col2) SELECT A.RT.value('Admin[1]','varchar(max)'), B.DT.value('@value','varchar(max)') FROM @MainXml.nodes('Parent/Root') as A(RT)
cross apply A.RT.nodes('Data/Type') as B(DT)
它将在上面的 xml 上正常工作。
如果部分被删除,它将无法工作。
为什么我的查询不适用于
Declare @MainXml XML = '<Parent> <Root> <Admin>admin1</Admin> </Root> <Root> <Admin>admin2</Admin> </Root> </Parent>'
我的 XML 中的部分可能存在也可能不存在。那么如何处理这样的xml。
如果没有数据,想给它输入null。
请给我建议。
最佳答案
这应该有效:
编辑:哦,我刚刚意识到,类型节点不止一个。稍等一下...
好的,你做得很好,只需将 CROSS APPLY 更改为 OUTER APPLY...
HTH
关于mysql - 将 XML 读入 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31326808/