Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Nilai Lajur XML dengan Cekap dalam Pelayan SQL?

Bagaimana untuk Menyoal Nilai Lajur XML dengan Cekap dalam Pelayan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-13 12:07:42491semak imbas

How to Efficiently Query XML Column Values in SQL Server?

Mengekstrak Data daripada Lajur XML dalam Pelayan SQL

Mengakses dan mendapatkan semula titik data tertentu daripada lajur XML dalam SQL Server dengan cekap adalah penting untuk pengurusan data yang berkesan. Panduan ini menunjukkan teknik untuk menapis baris berdasarkan kehadiran nilai tertentu dalam data XML.

Kaedah 1: Pengekstrakan Nilai Terus dengan value()

Untuk mencari baris yang mengandungi peranan khusus dalam lajur XML bernama "Peranan," gunakan fungsi value():

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

Pertanyaan ini mengekstrak nilai elemen <role> pertama dan membandingkannya menggunakan operator LIKE.

Nota Penting:

  • Pastikan lajur "Peranan" adalah daripada jenis data XML. Jika tidak, gunakan CAST(Roles AS XML) untuk menukarnya.
  • Kaedah ini hanya mendapatkan semula elemen <role> padanan pertama. Laraskan ungkapan XPath ((/root/role)[1]) untuk menyasarkan elemen atau atribut yang berbeza mengikut keperluan. Contohnya, untuk menapis berdasarkan atribut CodeSystem dengan nilai '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>

Kaedah 2: Pertanyaan Dipertingkat dengan CROSS APPLY dan nodes()

Untuk pertanyaan yang lebih fleksibel bagi elemen XML individu, gunakan CROSS APPLY dan nodes():

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

CROSS APPLY menjana jadual maya untuk setiap elemen <role>, membenarkan pemprosesan baris demi baris. nodes() mengekstrak setiap <role> elemen dan value() mendapatkan semula kandungan teksnya. Pendekatan ini membolehkan penapisan dan manipulasi data yang lebih kompleks.

Kaedah ini menyediakan penyelesaian yang teguh untuk menanyakan nilai lajur XML dalam SQL Server, membolehkan pengambilan dan penapisan data yang cekap berdasarkan kriteria tertentu.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Nilai Lajur XML dengan Cekap 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