【问题标题】:How to query values from XML without nodes?如何在没有节点的情况下从 XML 中查询值?
【发布时间】:2019-08-02 10:15:02
【问题描述】:

我有一个这样的 XML:

<User LoginName="yes" Signature="A" MobilePhone="yes" />

我使用以下查询:

SELECT field.value('/User[@LoginName=1][1]','varchar(max)') 
FROM table

我希望 LoginName 的输出为“yes”

【问题讨论】:

    标签: sql-server sqlxml


    【解决方案1】:

    您可以使用以下查询来获得您的预期结果:

    SELECT R.V.value('@LoginName[1]', 'varchar(max)') AS LoginValue
    FROM   TestTable AS T
    OUTER APPLY T.data.nodes('User[1]') as R(V)
    

    带有一些数据的示例执行:

    DECLARE @TestTable TABLE (data XML);
    
    INSERT INTO @TestTable (data) VALUES
    ('<User LoginName="yes" Signature="A" MobilePhone="yes" />
    <User LoginName="no" Signature="B" MobilePhone="NA" />');
    
    SELECT R.V.value('@LoginName[1]', 'varchar(max)') AS LoginValue
    FROM   @TestTable AS T
    OUTER APPLY T.data.nodes('User[1]') as R(V)
    

    结果会是

    LoginValue
    ----------
    yes
    

    请找working demo on db<>fiddle

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      相关资源
      最近更新 更多