簡體   English   中英

XML sql查詢,屬性作為列

[英]XML sql query , attribute as column

我需要查詢服務器中可用的xml數據

<root>
  <Parameter>
     <Param>APP_REG_NUMBER</Param>
     <Value>AL/T/2010/86</Value>
  </Parameter>
  <Parameter>
      <Param>SUBLINEID</Param>
      <Value>235931</Value>
  </Parameter>
</root>

這是我將數據保存到SQL Server的結構,我需要輸出如下:

Filed1     , Filed2   , APP_REG_NUMBER,  SUBLINEID
something   something , AL/T/2010/86, 235931

請只做那些需要的

您可以為此使用XQuery,但是意識到您正在用XML重新創建鍵值對,這否決了以任何合理方式使用模式或XQuery / XPATH的能力。 考慮將格式更改為:

<root>
    <APP_REG_NUMBER>AL/T/2010/86</APP_REG_NUMBER>
    <SUBLINEID>235931</SUBLINEID>
</root>

我題外話...您想要的查詢是:

DECLARE @testXml xml = N'<root>
  <Parameter><Param>APP_REG_NUMBER</Param><Value>AL/T/2010/86</Value></Parameter>
  <Parameter><Param>SUBLINEID</Param><Value>235931</Value></Parameter>
</root>'

SELECT 
    @testXml.value('(//Parameter[Param/text()="APP_REG_NUMBER"]/Value)[1]', 'nvarchar(50)') as APP_REG_NUMBER,
    @testXml.value('(//Parameter[Param/text()="SUBLINEID"]/Value)[1]', 'nvarchar(50)') as SUBLINEID

您可以使用//Parameter語法來查找所有Parameter元素,然后將其過濾( [Param/text()="foobar"] ),使其僅過濾那些具有名為ValueSUBLINEID且內部文本為SUBLINEID 從那里,您導航到/Value子元素並返回第一個結果( (query)[1] )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM