[英]SQL XML query from column
如何在SQL Server列中從這種XML中選擇文件名?
僅當高級標簽是名稱為File
對象時,文件名才在屬性VALUE
<Object NAME="File"> <Parameter ID="1" NAME="Name" VALUE="\\\\mysvr\\fiels\\readme1.txt" /> </Object>
可以將此子層次結構放置在xml的任何級別上(請參見下面的示例)
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.