簡體   English   中英

列中的SQL XML查詢

[英]SQL XML query from column

如何在SQL Server列中從這種XML中選擇文件名?

  1. 僅當高級標簽是名稱為File對象時,文件名才在屬性VALUE

     <Object NAME="File"> <Parameter ID="1" NAME="Name" VALUE="\\\\mysvr\\fiels\\readme1.txt" /> </Object> 
  2. 可以將此子層次結構放置在xml的任何級別上(請參見下面的示例)

  3. XML列可以包含0-N個文件名,我需要這樣的列表:

     id, filename --- ------------------------ 1 \\\\mysvr\\fiels\\readme1.txt 1 \\\\mysvr\\fiels\\readme2.txt 2 \\\\mysvr\\fiels\\readme3.txt 2 \\\\mysvr\\fiels\\readme4.txt 

XML內容示例:

declare @t1 table
(   id int,
   x XML
)

insert into @t1 (id, x)
select 1,N'<root name="name" id="12">
<class1>
  <Object NAME="File">
              <Parameter ID="1" NAME="Name" VALUE="\\mysvr\fiels\readme1.txt" />
   </Object>
</class1>
<class1>
<subclass1>
<Object NAME="File">
              <Parameter ID="10" NAME="Name" VALUE="\\mysvr\fiels\readme2.txt" />
</Object>
<Object NAME="bitmap">
              <Parameter ID="11" NAME="my1" VALUE="bmp" />
</Object>
</subclass1>
</class1>
</root>'
union 
select 2,N'<root name="name" id="12">
<class1>
  <Object NAME="File">
              <Parameter ID="13" NAME="Name" VALUE="\\mysvr\fiels\readme3.txt" />
  </Object>
  <Object NAME="Font">
              <Parameter ID="22" NAME="Tahoma" VALUE="11" />
  </Object>
</class1>
<class1>
<subclass1>
  <Object NAME="File">
              <Parameter ID="14" NAME="Name" VALUE="\\mysvr\fiels\readme4.txt" />
  </Object>
</subclass1>
</class1>
</root>'

嘗試這個:

SELECT
    id,
    Filename = ObjPrm.value('@VALUE', 'varchar(100)')
FROM @t1
CROSS APPLY x.nodes('//Object[@NAME="File"]/Parameter') AS Tbl(ObjPrm)

給我輸出:

在此處輸入圖片說明

為此,您可以執行以下操作。

定義要顯示的特定詳細信息的字符串。

您想要顯示id和Name,以便您的字符串看起來像這樣。

String holder = "#id# -- #VALUE#"

然后,您在整個字符串中搜索兩個'#'符號之間的值。

找到它們后,只需搜索“引號”內的值,然后顯示它們即可。

暫無
暫無

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

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