2017-08-09 162 views
0
SELECT * 
FROM @myHierarchy 
FOR XML AUTO 

数据是无法从XML格式的数据保存在SQL表

<_x0040_myHierarchy element_id="1" parent_ID="1" NAME="itemCode" StringValue="Simmi" ValueType="string" /> 

我无法在此查询

SELECT @xml = dbo.ToXML(@myHierarchy); 

SELECT 
    a.b.value('@ItemCode', 'varchar(20)') AS ItemCode 
FROM 
    @xml.nodes('/root/_x0040_myHierarchy') a(b) 

加载数据在此查询,itemcode是空白。我如何使用此查询加载数据?

+0

在你的示例XML中没有属性“ItemCode”.....你在做什么?你想从哪个属性获取值? –

+0

我想根据名称检索stringvalue –

回答

1

示例XML确实包含任何属性ItemCode - 它具有以下属性:

  • element_id
  • parent_ID
  • NAME
  • StringValue
  • ValueType

那么你是哪个值真的想要从XML元素中读出?

更新:检索StringValue属性,使用此代码:

SELECT 
    XC.value('@StringValue', 'varchar(50)') 
FROM 
    @xml.nodes('/_x0040_myHierarchy') AS XT(XC) 

如果你的XML包含一个<root> ..... </root>根元素,以及多个<_x0040_myHierarchy>元素里面,你要提取一个与@Name = 'itemCode' - 那么你需要使用这个SELECT

SELECT 
    XC.value('@StringValue', 'varchar(50)') 
FROM 
    @xml.nodes('/root/_x0040_myHierarchy') AS XT(XC) 
WHERE 
    XC.value('@NAME', 'varchar(50)') = 'itemCode' 
+0

我想检索基于名称的stringvalue –