【问题标题】:Unable to save data from xml format in SQL table无法在 SQL 表中保存 xml 格式的数据
【发布时间】:2017-08-09 08:16:47
【问题描述】:
SELECT * 
FROM @myHierarchy 
FOR XML AUTO

数据是

<_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 为空白。如何使用此查询加载数据?

【问题讨论】:

  • 您的示例 XML 中没有属性 ItemCode .....您要做什么?您想从哪个属性中获取值??
  • 我想根据名称检索字符串值

标签: sql-server xml stored-procedures


【解决方案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 包含一个 &lt;root&gt; ..... &lt;/root&gt; 根元素和多个 &lt;_x0040_myHierarchy&gt; 元素,并且您想提取带有 @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'

【讨论】:

  • 我想根据名称检索字符串值
猜你喜欢
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多