0

私は持っている

declare @xml_var varchar(4000) 
set  @xml_var =  
'<Text  ID = "1">
<Good Number ="Number_0"/>
<Good Number ="Number_1"/>
<Good Number ="Number_2"/>
<Good Number ="Number_3"/>
</Text>' 

このような非xml出力を返すスクリプトを実行しようとしています

Number_0
Number_1
Number_2
Number_3

どうすればいいですか?

私は試します

SELECT 
good.value('@Number', 'nvarchar(50)') as Number
FROM @xml_var.nodes('/Text') col(Text)

私は今SQLサーバーにアクセスできません。それは後でします

OK、解決策はありますが、試してみると

declare @string varchar(8000)
declare @xml_var xml;  
set  @string =  
'<Text  ID = "1">
<Good Number ="Number_0"/>
<Good Number ="Number_1"/>
<Good Number ="Number_2"/>
<Good Number ="Number_3"/>
</Text>'
SET @xml_var = @string;
SELECT Data.Col.value('@Number', 'nvarchar(100)') AS Number
FROM @xml_var.nodes('/Text/Good') AS Data(Col)

そこにSQLフィドルエラーが表示されます

4

1 に答える 1

2

まず、変数/列をXMLではなくとして宣言する必要がありますVARCHAR

次に、クエリは次のようになります。

SELECT T.N.value('@Number', 'nvarchar(100)') AS Number
FROM @xml_var.nodes('/Text/Good') AS T(N)

ワーキングデモ。データベースにアクセスできない場合は、SQL Fiddle を使用して、そのようなクエリをテストできます。

于 2013-10-21T04:45:42.707 に答える