SQL ServerのXML列のデータへのアクセス
SQL Serverを使用すると、XMLデータ型として定義された列にXMLデータを保存できます。 これらの列から特定のデータを取得するには、特殊なクエリが必要です。
この構造で「役割」という名前のXML列があるとしましょう:
Alpha Beta Gamma
特定の役割を含む行を見つけるには、このクエリを使用します。
SELECT
Roles
FROM
MyTable
WHERE
Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'
これは、 roles.value を使用して、最初の
役割要素の値を抽出し、
varchar(max)に変換します。 これにより、特定の役割を検索できます。
cast を使用してクエリの前に変換します。
列を取得するには 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クエリについては、
を参照してください。代わりに、 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