Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membuat Pertanyaan untuk Nilai Khusus dalam Lajur XML dalam Pelayan SQL?

Bagaimana untuk Membuat Pertanyaan untuk Nilai Khusus dalam Lajur XML dalam Pelayan SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-13 12:35:13638semak imbas

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

Mengekstrak Data daripada Lajur XML Pelayan SQL

Mengambil semula nilai khusus daripada data XML dalam SQL Server dengan cekap adalah penting untuk analisis data. Panduan ini menunjukkan cara membuat pertanyaan untuk nilai tertentu yang berada dalam lajur XML.

Pertimbangkan lajur XML bernama "Peranan," yang menyimpan XML yang mewakili peranan pengguna. Contoh serpihan XML mungkin kelihatan seperti ini:

<code class="language-xml"><root><role>Alpha</role><role>Beta</role><role>Gamma</role></root></code>

Untuk mencari semua baris yang mengandungi peranan tertentu (cth., "Gamma"), gunakan pertanyaan T-SQL ini:

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

Pertanyaan ini menggunakan fungsi value() untuk mengekstrak nama peranan pertama dan menggunakan LIKE untuk padanan separa. Ingat, ini menganggap "Peranan" adalah daripada jenis data XML. Jenis data lain memerlukan penukaran kepada XML terlebih dahulu.

Mengakses Atribut XML

Jika anda perlu menanyakan atribut khusus daripada elemen XML, fungsi value() kekal sebagai alat anda, tetapi ungkapan XPath berubah. Sebagai contoh, pertimbangkan XML ini dengan atribut:

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

Untuk mendapatkan semula nilai atribut "sistem kod" ('2'), gunakan:

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

Pertanyaan XML Terperinci

Untuk senario yang lebih kompleks, seperti mengendalikan struktur XML bersarang atau lelaran melalui berbilang elemen peranan, terokai teknik seperti perataan XML dan CROSS APPLY. Rujuk dokumentasi SQL Server XML lanjutan untuk panduan terperinci tentang kaedah ini.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Pertanyaan untuk Nilai Khusus dalam Lajur XML dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn