4

Sql Server で XPath を使用して、次の xml ドキュメントの Lookup.Result 要素のテキスト ノードを選択しようとしています。

<Commands>
<Command id="1">
<Lookup.Result>Result.OK</Lookup.Result>
</Command>
</Commands>

次のクエリを試します。

declare @xml xml
set @xml = '<Commands>
    <Command id="1">
    <Lookup.Result>Result.OK</Lookup.Result>
    </Command>
    </Commands>
'
select t.c.value('./Lookup&#46;Result/text()[1]', 'varchar(20)')
from @xml.nodes('/Commands/Command') t(c)

しかし、次のエラーが表示されます: XQuery [value()]: Syntax error near 'Lookup'

どうすれば逃げることができますか。(Lookup.Result 要素タグ名のドット) XPath 式で? この問題に対するエレガントな解決策を見つけるのを手伝ってください。よろしくお願いいたします。

4

2 に答える 2

3
    declare @xml xml 
    set @xml = '<Commands>
    <Command id="1">
    <Lookup.Result>Result.OK</Lookup.Result>
    </Command>
    </Commands> ' 

    select t.c.value('(./Lookup.Result/text())[1]', 'varchar(20)') 
    from @xml.nodes('/Commands/Command') t(c)

あなたは行方不明です

()

上記の xpath の周りで、MSSQL は . 私のマシンでは問題ありません

于 2013-04-05T12:51:03.197 に答える
0

エスケープ文字は 5 つしかありません。

"   &quot;
'   &apos;
<   &lt;
>   &gt;
&   &amp;

そのため、前処理する関数と後処理する関数が必要です。つまり、UDF で 5 つのネストされた REPLACE ステートメントをラップします...

于 2013-04-05T12:39:05.590 に答える