【问题标题】:Read value in XML Node - T-SQL读取 XML 节点中的值 - T-SQL
【发布时间】:2013-07-29 08:14:32
【问题描述】:

这是我的代码......

DECLARE @XML AS XML;

SET @XML = CAST('<Session id="ID969138672" realTimeID="4300815712">

  <VarValues>
    <varValue id="ID123" source="Internal" name="DisconnectedBy">VisitorClosedWindow</varValue>
    <varValue id="ID1234" source="PreChat"  name="email">1234@mail.ru</varValue>
  </VarValues>

</Session>
' AS XML)

SELECT 
 xmlData.Col.value('@id','varchar(max)')
,xmlData.Col.value('@source','varchar(max)')
,xmlData.Col.value('@name','varchar(max)')
FROM @XML.nodes('//Session/VarValues/varValue') xmlData(Col);

这是输出.....

如何包含 varValue 的实际值?

我还需要读取 VisistorClosedWindow1234@mail.ru

【问题讨论】:

    标签: sql-server xml tsql nodes


    【解决方案1】:

    你可以这样做:

    xmlData.Col.value('.','varchar(max)')
    

    所以选择是:

    SELECT 
     xmlData.Col.value('@id','varchar(max)')
    ,xmlData.Col.value('@source','varchar(max)')
    ,xmlData.Col.value('@name','varchar(max)')
    ,xmlData.Col.value('.','varchar(max)')
    FROM @XML.nodes('//Session/VarValues/varValue') xmlData(Col);
    

    【讨论】:

      【解决方案2】:

      只需使用.value('.', 'varchar(50)) 行即可:

      SELECT 
           xmlData.Col.value('@id','varchar(25)'),
           xmlData.Col.value('@source','varchar(50)'),
           xmlData.Col.value('@name','varchar(50)'),
           xmlData.Col.value('.','varchar(50)')         -- <== this gets your the element's value
      FROM @XML.nodes('//Session/VarValues/varValue') xmlData(Col);
      

      【讨论】:

        猜你喜欢
        • 2018-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多