XML値の列を検索して、に文字列が含まれているかどうかを確認します。スキーマがわかりません。文字列がどこかに含まれているかどうかを知りたいのですが。 XPATHがこの状況で機能するかどうかはわかりません。
同等のもの
_Select s.Name, ts.ValueXML from table t (nolock)
join table2 ts (nolock) on t.key_Id = ts.key_Id
join table3 s (nolock) on ts.key_Id=s.key_Id
where s.Name like '%Lab%' and ts.ValueXML like '%PreviewDateRange%'
_
エラー:引数データ型xmlは、類似の関数の引数1では無効です。
関連するts
テーブルの列
ValueXml (XML(.), null)
私が探しているアイテムは属性でなければなりません。したがって、上記が不可能な場合は、その属性を含むものは良い代替手段となります。
最も単純な(ただし、実行が最も高速ではない)方法は、like
に渡す前に列をnvarchar(max)
にキャストすることです。
cast(ValueXml as nvarchar(max)) like '%PreviewDateRange%'
どうぞ。
SELECT *
FROM MyTable
WHERE MyXmlMetadataColumn.exist('//*/text()[contains(upper-case(.),upper-case("MySearchTerm"))]') = 1
「dasblinkenlight」が提供する解決策として、これは私には問題なく機能し、XMLタグ名も検索しません。
それがどれほどのパフォーマンスであるかはわかりません。