Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengekstrak Nilai Atribut daripada Data XML dalam SQL Menggunakan XQuery?

Bagaimana untuk Mengekstrak Nilai Atribut daripada Data XML dalam SQL Menggunakan XQuery?

DDD
DDDasal
2024-12-25 13:49:14785semak imbas

How to Extract Attribute Values from XML Data in SQL Using XQuery?

SQL: Mengakses Nilai Atribut daripada Data XML

Dalam SQL, mengakses nilai atribut dalam jenis data XML boleh dicapai melalui XQuery . Ini membolehkan anda membuat pertanyaan dan memanipulasi data XML dengan cekap.

Untuk mendapatkan semula nilai atribut bahasa dalam XML yang disediakan:

<email>
  <account language="en" ... />
</email>

Anda boleh menggunakan yang berikut Ungkapan XQuery:

(/email/account/@language)[1]

Ungkapan ini menentukan:

  • (/email/akaun): Memilih elemen akaun dalam akar e-mel elemen.
  • @bahasa: Mendapatkan semula nilai atribut bahasa.
  • [1] (pilihan): Mengembalikan nilai padanan pertama, kerana hanya terdapat satu atribut bahasa.

Untuk menggunakan ungkapan ini dalam pernyataan SQL anda, anda boleh mengubah suai pertanyaan anda sebagai berikut:

SELECT m.Body.value('(/email/account/@language)[1]', 'nvarchar(max)')
FROM Mail

Pertanyaan ini akan mengembalikan nilai atribut bahasa sebagai rentetan.

Contoh:

declare @xml xml =
'<email>
  <account language="en" />
</email>'

select @xml.value('(/email/account/@language)[1]', 'nvarchar(max)')

Output:

en

Anda juga boleh menggunakan XQuery untuk memproses Data XML daripada jadual, seperti yang ditunjukkan dalam contoh berikut:

declare @t table (m xml)

insert @t values 
    ('<email><account language="en" /></email>'), 
    ('<email><account language="fr" /></email>')

select m.value('(/email/account/@language)[1]', 'nvarchar(max)')
from @t

Output:

en
fr

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Nilai Atribut daripada Data XML dalam SQL Menggunakan XQuery?. 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