将 XML 读入 SQL 表
Reading XML into SQL tables
我正在阅读 xml 并将其写入 sql tables
想在 xml 下方插入 table
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
我正在阅读 xml 并将其写入 sql tables
想在 xml 下方插入 table
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