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