Mengakses Data dalam Lajur XML Pelayan SQL
SQL Server membenarkan menyimpan data XML dalam lajur yang ditakrifkan sebagai jenis data XML. Mendapatkan semula data khusus daripada lajur ini memerlukan pertanyaan khusus.
Katakan anda mempunyai lajur XML bernama "Peranan" dengan struktur ini:
<code class="language-xml"><root><role>Alpha</role><role>Beta</role><role>Gamma</role></root></code>
Untuk mencari baris yang mengandungi peranan tertentu, gunakan pertanyaan ini:
<code class="language-sql">SELECT Roles FROM MyTable WHERE Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'</code>
Ini menggunakan Roles.value
untuk mengekstrak nilai elemen role
pertama, menukarnya kepada varchar(max)
. Ini membolehkan carian untuk peranan tertentu.
Jika lajur anda belum lagi merupakan jenis data XML, gunakan CAST
untuk menukarnya sebelum membuat pertanyaan.
Pertanyaan juga boleh menyasarkan atribut XML. Contohnya, dengan XML ini dalam lajur "data":
<code class="language-xml"><utilities.codesystems.codesystemcodes ....="" code="0001F" codesystem="2" codetags="-19-" iid="107"></utilities.codesystems.codesystemcodes></code>
Untuk mendapatkan baris dengan CodeSystem
ialah "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>
Untuk pertanyaan XML yang lebih maju dalam T-SQL, lihat:
Sebagai alternatif, CROSS APPLY
menawarkan lebih fleksibiliti untuk mencari berbilang elemen "peranan":
<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>
Pendekatan ini membolehkan pengekstrakan data yang lebih cekap dan disasarkan daripada lajur XML dalam SQL Server.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Nilai dalam Lajur XML dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!