Das folgende SQL gibt 1
für alle Zeilen der zweiten und der dritten Spalte zurück. Aber sollte es nicht einfach 1
s für die erste Zeile zurückgeben?Prüfen, ob XML nur eine bestimmte Zeichenfolge ist?
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;
Ich weiß mit x.value('/', 'nvarchar(max)') = 'SomeText.'
kann das Problem lösen.
Die Frage ist, warum die XQuery x.exist('/text() = "SomeText."')
oder x.exist('contains(/text()[1], "SomeText.")')
nicht funktionieren (immer True).
Dank. Die Bedingung sollte in '. [....]' für '.exist()' eingeschlossen sein. – ca9163d9