【问题标题】:T-SQL, get value from xml in a columnT-SQL,从列中的xml获取值
【发布时间】:2022-01-14 10:20:33
【问题描述】:

我有一个带有 XML 列 (xmlCol) 的表,我正在尝试从中查询一个值。

这是 xml。

<criteria>
  <factor name="Rivers" title="Rivers">
    <value dataType="Int32" value="1743" description="Wilson0" />
  </factor>
  <factor name="OptionalAffProperties" title="Include properties">
    <value dataType="String" value="FishingModel" description="Fishing Model" />
  </factor>
</criteria>

这是获取列的选择。从 MyTable 中选择 xmlCol

我正在尝试将值 1743 返回到名为 RiverID 的列。

迈克

【问题讨论】:

    标签: sql xml tsql


    【解决方案1】:

    这应该可行:

    SELECT
        xmlCol.value('(//factor[@name="Rivers"]/value/@value)[1]', 'int') As RiverID
    FROM
        MyTable
    

    value() Method (xml Data Type) - SQL Server | Microsoft Docs
    XQuery Language Reference (SQL Server) - SQL Server | Microsoft Docs

    【讨论】:

    • 仅供参考,您在@name="Rivers 上缺少一个结束双引号。编辑队列已满,否则我会为您添加它。
    • @Austin 好地方!固定。
    • 别担心!我没有意识到你可以这样格式化路径,所以我也很感激!
    • /criteria/factor 会比//factor 快
    【解决方案2】:

    要获取属性值,可以这样查询:

    select xmlCol.value('(/criteria/factor/value/@value)[1]', 'int') RiverID
    from MyTable
    

    您提供要查找的记录的 xml 路径:(/criteria/factor/value

    然后是你需要的属性:/@value)[1]。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 2012-06-15
      相关资源
      最近更新 更多