「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > SQL ServerのXML列の値を照会する方法は?

SQL ServerのXML列の値を照会する方法は?

2025-04-19に投稿されました
ブラウズ:388

How to Query Values within XML Columns in SQL Server?

SQL ServerのXML列のデータへのアクセス

SQL Serverを使用すると、XMLデータ型として定義された列にXMLデータを保存できます。 これらの列から特定のデータを取得するには、特殊なクエリが必要です。

この構造で「役割」という名前のXML列があるとしましょう:

AlphaBetaGamma

特定の役割を含む行を見つけるには、このクエリを使用します。

SELECT
  Roles
FROM
  MyTable
WHERE
  Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'
これは、

roles.value を使用して、最初の役割要素の値を抽出し、 varchar(max)に変換します。 これにより、特定の役割を検索できます。

列がまだXMLデータ型でない場合は、

cast を使用してクエリの前に変換します。

クエリは、XML属性をターゲットにすることもできます。 たとえば、このXMLが「データ」列にあります:

列を取得するには codesystem は "2":

です
SELECT
  [data]
FROM
  [dbo].[CodeSystemCodes_data]
WHERE
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2'

T-SQLでより高度なXMLクエリについては、

を参照してください。
  • t-sql
  • を使用してXMLフィールドをクエリする
  • sql server
  • でXMLデータのフラット化

代わりに、 Cross apply は、複数の「役割」要素を検索するためのより柔軟性を提供します:

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%'

このアプローチにより、SQL ServerのXML列からのデータのより効率的でターゲットを絞った抽出が可能になります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3