SQL 选择 : Take value from XML field

标签 sql sql-server xml xpath xquery

我正在努力使用 SQL Select 语句从 XML 字段中提取值。

XML 字段是信息,表格是结果。

<Screens>
  <Results>
    <Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse="" 
          DataAction="" DataValue="2" DataScore="0" />
  </Results>
</Screens>

我需要拉取属性 DataValue。对于上面的记录,我会寻找 2。

如有任何帮助,我们将不胜感激。

最佳答案

对于 SQL Server 是这样的:

DECLARE @xml XML=
'<Screens>
  <Results>
    <Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse="" 
          DataAction="" DataValue="2" DataScore="0" />
  </Results>
</Screens>';

SELECT @xml.value('(/Screens/Results/Result/@DataValue)[1]','int') AS DataValue

编辑:数据来自表

只需将我的 @tbl 替换为您的实际表格即可

--test scenario with two data rows, one has DataValue=2 the other =99
DECLARE @tbl TABLE(ID INT IDENTITY,info XML);
INSERT INTO @tbl(info) VALUES
 (
    '<Screens>
      <Results>
        <Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse="" 
              DataAction="" DataValue="2" DataScore="0" />
      </Results>
    </Screens>'
 )
,(
    '<Screens>
      <Results>
        <Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse="" 
              DataAction="" DataValue="99" DataScore="0" />
      </Results>
    </Screens>'
 );

--this is the query
SELECT info.value('(/Screens/Results/Result/@DataValue)[1]','int') AS DataValue
FROM @tbl

结果是2和99

关于SQL 选择 : Take value from XML field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653117/

相关文章:

SQL从枚举类型中选择随机值

RODBC::sqlsave() 在保存到 SQL Server 到 varchar(255) 时截断 DF 中的列

sql - SQL 中所需的异常输出格式

PHP MySQLi While 循环

c# - Azure SQL - 单个或多个数据库连接?

sql - 使用 T-SQL 删除列中的无关字符

xml - 在 Clojure 中获取 XML 中元素的值?

MySQL 到 XML 文件

c# - 子元素上的 XML 命名空间

mysql - 如何在请求其中一个等于的情况下获取不同值的计数