Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将XML读入SQL表_Mysql_Sql Server_Xml_Rdbms - Fatal编程技术网

Mysql 将XML读入SQL表

Mysql 将XML读入SQL表,mysql,sql-server,xml,rdbms,Mysql,Sql Server,Xml,Rdbms,我正在读取xml并将其写入sql表 要将下面的xml插入表中吗 交叉应用A.RT.nodes('数据/类型')作为B(DT) 它可以很好地处理上述xml 如果部分被删除,它将无法工作 为什么我的查询不适用于 Declare@MainXml= ' 管理员1 管理员2 ' 我的XML中的部分可能存在,也可能不存在。那么如何处理这样的xml呢 如果没有数据,则要为其输入null 请推荐我。这应该可以: 编辑:哦,我刚刚意识到,有不止一种类型的节点。等一下 好的,你做得很好,只需将交叉应用更改为外部应

我正在读取xml并将其写入sql表

要将下面的xml插入表中吗

交叉应用A.RT.nodes('数据/类型')作为B(DT)

它可以很好地处理上述xml

如果部分被删除,它将无法工作

为什么我的查询不适用于

Declare@MainXml=
'
管理员1
管理员2
'
我的XML中的部分可能存在,也可能不存在。那么如何处理这样的xml呢

如果没有数据,则要为其输入null

请推荐我。

这应该可以:

编辑:哦,我刚刚意识到,有不止一种类型的节点。等一下

好的,你做得很好,只需将交叉应用更改为外部应用


HTH

请修复标记以反映您正在使用的RDBMS(MySQL或MS SQL Server)。
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>'
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)
Declare @MainXml XML =
'<Parent>
  <Root>
      <Admin>admin1</Admin>     
  </Root>
 <Root>
     <Admin>admin2</Admin>
 </Root>
</Parent>'