SQL Server 列でこの種の XML からファイル名を選択するにはどうすればよいですか?
ファイル名は、
VALUE
高レベルのタグがFile
このような名前のオブジェクトである場合にのみ属性にあります<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>'