ホームページ > データベース > mysql チュートリアル > SQL Server で XML 列内の特定の値をクエリする方法

SQL Server で XML 列内の特定の値をクエリする方法

Linda Hamilton
リリース: 2025-01-13 12:35:13
オリジナル
634 人が閲覧しました

How to Query for Specific Values within an XML Column in SQL Server?

SQL Server の XML 列からのデータの抽出

SQL Server 内の XML データから特定の値を効率的に取得することは、データ分析にとって非常に重要です。 このガイドでは、XML 列に存在する特定の値をクエリする方法を説明します。

ユーザーの役割を表す XML を格納する、「Roles」という名前の XML 列について考えてみましょう。 XML フラグメントのサンプルは次のようになります:

<code class="language-xml"><root><role>Alpha</role><role>Beta</role><role>Gamma</role></root></code>
ログイン後にコピー

特定のロール (例: "Gamma") を含むすべての行を検索するには、次の T-SQL クエリを使用します。

<code class="language-sql">SELECT
  Roles.value('(/root/role)[1]', 'varchar(max)')
FROM
  MyTable
WHERE
  Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'Gamma';</code>
ログイン後にコピー

このクエリは、value() 関数を使用して最初のロール名を抽出し、部分一致には LIKE を使用します。 これは、「ロール」が XML データ型であることを前提としていることに注意してください。 他のデータ型の場合は、最初に XML に変換する必要があります。

XML 属性へのアクセス

XML 要素から特定の属性をクエリする必要がある場合は、value() 関数がツールとして残りますが、XPath 式は変更されます。たとえば、次の属性を持つ XML について考えてみましょう。

<code class="language-xml"><utilities.codesystems.codesystemcodes code="0001F" codesystem="2" ... /></code>
ログイン後にコピー

「codesystem」属性値 (「2」) を取得するには、次を使用します。

<code class="language-sql">SELECT
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@codesystem)[1]', 'varchar(max)')
FROM
  [dbo].[CodeSystemCodes_data]
WHERE
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@codesystem)[1]', 'varchar(max)') = '2';</code>
ログイン後にコピー

高度な XML クエリ

ネストされた XML 構造の処理や複数のロール要素の反復処理など、より複雑なシナリオの場合は、XML フラット化や CROSS APPLY などのテクニックを検討してください。 これらのメソッドの詳細なガイダンスについては、高度な SQL Server XML ドキュメントを参照してください。

以上がSQL Server で XML 列内の特定の値をクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート