1
次のSQLは、2番目と3番目の列のすべての行に対して1
を返します。しかし、それはちょうど最初の行のために1
を返すべきではありませんか?XMLが特定の文字列であるかどうかを確認しますか?
with t as (select cast('SomeText' as xml) x
union all
select cast('<s>Test</s>' as xml)
)
select * ,
x.exist('contains(/text()[1], "SomeText.")') ,
x.exist('/text() = "SomeText."')
from t
where x.exist('contains(/text()[1], "SomeText.")') = 1
and x.exist('/text() = "SomeText."') = 1;
私はx.value('/', 'nvarchar(max)') = 'SomeText.'
を使用して問題を解決できることを知っています。
XQuery x.exist('/text() = "SomeText."')
またはx.exist('contains(/text()[1], "SomeText.")')
が機能していない(常にtrueを返す)理由については、質問があります。
感謝を返すん。条件は '.exist()'に対して '。[....]'で囲む必要があります。 – ca9163d9