ホームページ >データベース >mysql チュートリアル >SQL Server の XML 列からデータを効率的に抽出するにはどうすればよいですか?

SQL Server の XML 列からデータを効率的に抽出するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-13 12:04:43651ブラウズ

How Can I Efficiently Extract Data from XML Columns in SQL Server?

SQL Server での XML データ抽出のマスター: 実践ガイド

SQL Server の XML 列から特定のデータ ポイントを抽出するのは複雑になる場合があります。このガイドでは、このプロセスを簡素化するための効率的な T-SQL テクニックを提供します。

XML 列の値 (「ロール」など) をクエリするには、次の構文を使用します。

<code class="language-sql">SELECT
  Roles
FROM
  MyTable
WHERE
  Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'</code>

覚えておいてください: 非 XML 列はクエリを実行する前に変換する必要があります。 特定の XML 属性をターゲットにすることもできます。

次の XML の例を考えてみましょう:

<code class="language-xml"><utilities.codesystems.codesystemcodes ....="" code="0001F" codesystem="2" codetags="-19-" iid="107"></utilities.codesystems.codesystemcodes></code>

このクエリは、CodeSystem が '2' に等しい行を取得します:

<code class="language-sql">SELECT
  [data]
FROM
  [dbo].[CodeSystemCodes_data]
WHERE
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2'</code>

CROSS APPLY 演算子は、XML ノードを効率的に反復処理します。この例では、「ga」を含むすべてのロールを取得します:

<code class="language-sql">SELECT * FROM
(SELECT
       pref.value('(text())[1]', 'varchar(32)') AS RoleName
FROM
       MyTable CROSS APPLY
       Roles.nodes('/root/role') AS Roles(pref)
) AS Result
WHERE RoleName LIKE '%ga%'</code>

これらのメソッドを使用すると、SQL Server の XML 列に対して効果的にクエリを実行してデータを抽出できるようになり、高度なデータ分析と管理が容易になります。

以上がSQL Server の XML 列からデータを効率的に抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。