1

SQL Server の XML クエリに問題があります。私は通常、@XMLこのようなデータを取得するために変数に対してクエリを実行しますが、特定のステートメントでは機能しません。

このコードは正しく動作します

Declare @XML as XML = 
'
<ResponseData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Remain>12345654321.1234</Remain>
  <ErrorMsg />
</ResponseData>';
;

Select 
    F.value('Remain[1]','decimal(18,4)') as A,
    F.value('ErrorMsg[1]','varchar(100)') as B
FROM  @XML.nodes('ResponseData')Tbl(F);

しかし、最初の行に新しい行を追加する@XMLと、解析できず、次のエラーが返されます

XML 解析: 行 2、文字 6、text/xmldecl が入力の先頭にありません

Declare @XML as XML = 
'
<?xml version="1.0" encoding="utf-16"?>
<ResponseData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Remain>12345654321.1234</Remain>
  <ErrorMsg />
</ResponseData>';
;

Select 
    F.value('Remain[1]','decimal(18,4)') as A,
    F.value('ErrorMsg[1]','varchar(100)') as B
FROM  @XML.nodes('ResponseData')Tbl(F);

変数に <?xml version="1.0" encoding="utf-16"?>追加され@XMLます。

ありがとう

4

1 に答える 1

2

文字列の先頭と <?xml

改行を削除するだけです。

utf-16 を使用する場合は、文字列の前にN

Declare @XML as XML = N'<?xml version="1.0" encoding="utf-16"?>....
于 2013-10-21T11:17:21.950 に答える