Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
Sql server SQL Server:包含XML数据的列_Sql Server_Xml_Exact Synergy Enterprise - Fatal编程技术网

Sql server SQL Server:包含XML数据的列

Sql server SQL Server:包含XML数据的列,sql-server,xml,exact-synergy-enterprise,Sql Server,Xml,Exact Synergy Enterprise,我想将XML数据中的值提取到列中 我试着用这个: DECLARE @xml XML SELECT @xml = Data FROM synergy..XMLData SELECT xmlData.Col.value('(column/@value)[1]','varchar(255)') AS 'Artikelen', xmlData.Col.value('(column/@value)[2]','varchar(255)') AS 'Batchnummer', x

我想将XML数据中的值提取到列中

我试着用这个:

DECLARE @xml XML
SELECT @xml = Data FROM synergy..XMLData

SELECT  
    xmlData.Col.value('(column/@value)[1]','varchar(255)') AS 'Artikelen',
    xmlData.Col.value('(column/@value)[2]','varchar(255)') AS 'Batchnummer',
    xmlData.Col.value('(column/@value)[3]','varchar(255)') AS 'Aantal'
FROM    
    @XML.nodes ('//table/rows/row/columns') xmldata(Col)
然而,我只得到标题,但没有数据

这就是XML的外观:

<?xml version="1.0" encoding="utf-16"?>  
<table>   
    <id>{941D5F5A-156A-4F19-A3B0-111E9825707B}</id>   
    <rows>     
       <row>       
           <columns>         
               <column name="Artikelen" value="102535.A.M2" type="System.String" />          
               <column name="Batchnummer" value="19D1739/133" type="System.String" />          
               <column name="Aantal" value="8" type="System.Int32" />          
               <column name="Opmerkingen" value="te weinig" type="System.String" />          
               <column name="Selecteren" value="1" type="System.String" />         
               <column name="DefaultKey" value="1" type="System.Int32" />        
           </columns>      
       </row>   
    </rows>    
    <key>DefaultKey</key>    
    <total>0</total>   
    <AddOnKey>0</AddOnKey>    
    <data />   
    <parameters />  
</table>

{941D5F5A-156A-4F19-A3B0-111E9825707B}
默认键
0
0

最好分解XML,通过引用命名属性而不是它们的位置来获取所需的数据

SQL


非常确定MySQL不支持这种语法,这种SQL方言语法可能与SQL Server(MSSQL)更相关..echoing@RaymondNijland:这不是MySQL语法。看起来更像Transact-SQL(Microsoft SQL Server)。“呼应”yea同意@spencer7593我应该说这不是MySQL语法,而是@RaymondNijland抱歉,这不是MySQL,而是MSSQL(Microsoft SQL Server)。谢谢你的观察。
DECLARE @xml XML = '
<table>
    <id>{941D5F5A-156A-4F19-A3B0-111E9825707B}</id>
    <rows>
        <row>
            <columns>
                <column name="Artikelen" value="102535.A.M2" type="System.String"/>
                <column name="Batchnummer" value="19D1739/133" type="System.String"/>
                <column name="Aantal" value="8" type="System.Int32"/>
                <column name="Opmerkingen" value="te weinig" type="System.String"/>
                <column name="Selecteren" value="1" type="System.String"/>
                <column name="DefaultKey" value="1" type="System.Int32"/>
            </columns>
        </row>
    </rows>
    <key>DefaultKey</key>
    <total>0</total>
    <AddOnKey>0</AddOnKey>
    <data/>
    <parameters/>
</table>';

SELECT col.value('(column[@name="Artikelen"]/@value)[1]','VARCHAR(255)') AS [Artikelen]
    ,  col.value('(column[@name="Batchnummer"]/@value)[1]','VARCHAR(255)') AS [Batchnummer]
    ,  col.value('(column[@name="Aantal"]/@value)[1]','INT') AS [Aantal]
FROM @XML.nodes ('/table/rows/row/columns') AS tab(col);
+-------------+-------------+--------+
|  Artikelen  | Batchnummer | Aantal |
+-------------+-------------+--------+
| 102535.A.M2 | 19D1739/133 |      8 |
+-------------+-------------+--------+