[解決済み] SQL Server XML Datatype の LIKE ステートメントを使用する。
2023-01-01 10:41:31
質問
varcharフィールドがある場合、以下のようなことが簡単にできます。
SELECT * FROM TABLE WHERE ColumnA LIKE '%Test%'
を実行して、そのカラムが特定の文字列を含んでいるかどうかを確認することができます。
XML Typeの場合はどうするのでしょうか?
私は'Text'ノードを持つ行だけを返す次のようなものを持っていますが、私はそのノード内で検索する必要があります。
select * from WebPageContent where data.exist('/PageContent/Text') = 1
どのように解決するのですか?
非常に簡単にできるはずです。
SELECT *
FROM WebPageContent
WHERE data.value('(/PageContent/Text)[1]', 'varchar(100)') LIKE 'XYZ%'
は
.value
メソッドは実際の値を与え、それを VARCHAR() として返すように定義し、LIKE 文でチェックすることができます。
注意してほしいのは、これはものすごく速いというわけではないということです。もし、XMLに特定のフィールドがあり、それを何度も検査する必要がある場合は、そうすることができます。
- XML を取得し、探している値を VARCHAR() として返すストアド関数を作成する。
- この関数を呼び出す新しい計算フィールドをテーブルに定義し、それをPERSISTEDカラムにします。
これにより、基本的にXMLの特定の部分を計算されたフィールドに抽出し、それをパーシステッドにすることで、そのフィールドで非常に効率的に検索することができます(なんと、そのフィールドをINDEXすることさえできるのです!)。
マーク
関連
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] SQL Server の VARCHAR/NVARCHAR 文字列に改行を挿入する方法
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] 文字列の一部をUPDATEおよびREPLACEする。
-
[解決済み] 複数の列に対してSELECT DISTINCTする方法(またはできる方法)は?
-
[解決済み] T-SQL文の接頭辞Nの意味と使うべきタイミングは?
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?