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
Lepaskan: 2025-01-13 12:07:42
asal
545 orang telah melayarinya

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():

SELECT
  Roles
FROM
  MyTable
WHERE
  Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor';
Salin selepas log masuk

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':
SELECT 
  [data] 
FROM
  [dbo].[CodeSystemCodes_data]
WHERE
  CAST([data] as XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2';
Salin selepas log masuk

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

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

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%';
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan