Memfilter Kolom XML Menggunakan XQuery di SQL Server – XQuery di SQL Server membantu untuk meminta dan mengekstrak data dari dokumen XML. XQuery memberikan pendekatan yang berbeda untuk mendapatkan informasi dari dokumen XML dan yang setara dapat digunakan untuk menerapkan filter data atau klausa where pada elemen XML juga.
Memfilter Kolom XML Menggunakan XQuery di SQL Server
zorba-xquery – SQL Server menyediakan fitur XQuery untuk menanyakan tipe data XML atau membuat kueri dengan kolom XML dengan XPATH. Menggunakan XQuery, pengguna dapat Menyisipkan, Memperbarui, dan Menghapus dengan node XML dan nilai node dalam kolom XML.
Baca Juga : XQuery Pengarsip: Alat Bantu Pencarian EAD sebagai Data
SQL Server 2005 atau edisi yang lebih baru, memungkinkan penggunaan parameter input tipe data XML dalam prosedur tersimpan dan mendukung penggunaan fungsi XML yang berbeda untuk mengekstrak informasi dari node XML dan sebaliknya dengan mendapatkan atribut di kolom tipe data XML juga.
Pada artikel ini, kita akan berlatih dengan tipe data Querying XML menggunakan XQuery untuk menyalurkan informasi dengan node XML dan atribut dengan beberapa contoh. Di sini, kami telah menggunakan satu tabel contoh dengan data sampel untuk penjelasan yang lebih baik.
Mengambil nilai dari node XML target
Format tabel dari dokumen XML dengan bifurkasi node XML sebagai nama kolom yang menggunakan SQL Server dapat diselesaikan dengan bantuan XQuery. XQuery akan mengembalikan nilai node XML dalam model tabel dengan kombinasi fungsi node() dan value() pada kolom XML. fungsi node() mengakui lokasi node XML sebagai XPATH dalam dokumen XML dan fungsi value() mengembalikan node XML atau nilai atribut yang node direferensikan di dalam fungsi dengan tipe data.
XPath di dalam XQuery digunakan untuk menemukan lokasi node XML di kolom XML. XQuery mengembalikan nilai dari simpul atau atribut XML yang ditentukan berdasarkan parameter. XQuery menyelesaikan logika bisnis dengan manipulasi data pada node XML dan nilai atribut di dalam kolom tipe data XML dengan permintaan tersebut.
Di sini, kami membuat kueri contoh tipe data XML menggunakan XQuery dengan CROSS APPLY & OUTER APPLY. Keduanya adalah kasus penggunaan yang sangat berbeda karena CROSS APPLY akan bekerja sebagai INNER JOIN dengan fungsi node(). Jika jalur ada di kolom XML, maka baris akan diambil di kumpulan hasil. Jika tidak ada, maka baris itu akan disaring. Nah, OUTER APPLY akan berfungsi sebagai OUTER JOIN; jika XPATH tidak ada di kolom tipe data XML, maka baris tersebut akan diambil dengan NULL sebagai nilai elemen XML dalam kumpulan hasil.
Dalam contoh Kueri di atas, kami baru saja mengembalikan nilai elemen XML dari dokumen XML. Tapi, pernyataan XQuery serupa juga berfungsi di klausa WHERE. Misalnya, kembalikan baris dari tabel di mana karyawan menggunakan “ Bank internasional ” sebagai “ nama bank ”. Sesederhana itu, pengguna dapat menerapkan filter pada nilai elemen XML dalam pernyataan WHERE menggunakan subquery dengan mengambil hasil kueri di dalam alias kueri.
Menerapkan filter pada simpul XML:
Fungsi node() jauh lebih matang untuk memisahkan informasi ke format tabel berbasis baris-kolom dari node XML dengan tipe data XML query yang menggunakan fungsi query() atau nilai(). Penggunaan fungsi-fungsi ini semakin diperlukan saat Anda menyalin atau memindahkan beberapa node dari kolom tipe data XML. Seperti contoh tipe data XML Kueri di atas, Data dikeluarkan dari XML dengan menentukan node XML dengan jalur. Sekarang, kita hanya membutuhkan baris-baris yang informasi XML-nya memenuhi kondisi WHERE dengan node XML.
Di sini, saya juga menggunakan nilai simpul XML AnnualRevenue yang diekstraksi dalam ketentuan WHERE dari SELECT Query di atas. Mirip dengan kueri normal, kita dapat menggunakan fungsi value() dalam klausa WHERE. Pengguna tidak dapat menggunakan alias pernyataan XQuery dalam ketentuan WHERE. Memang, jika kita mengambil seluruh pernyataan itu di dalam Query dalam dengan alias tabel. Namun, itu bukan cara yang tepat untuk kinerja kueri.
Di sini, notasi titik digunakan untuk menghubungkan logika kueri dengan nama kolom untuk node tertentu. Kami mengurai fungsi query() dengan pernyataan XPATH yang menyarankan tipe data Querying XML untuk mengambil Pendapatan Tahunan untuk karyawan; yang tokonya memiliki pendapatan lebih dari 100.000. Setiap garis miring dalam proklamasi XPATH mewakili indeks simpul ke dalam dokumen XML.
Metode ini mengambil pernyataan XQuery dalam Query normal dan mengembalikan casting nilai tunggal dengan tipe data seperti yang disebutkan dalam pernyataan XQuery. Sangat penting untuk menerapkan bahwa XPATH mengacu pada seluruh dokumen XML, yang telah digunakan dalam kueri. Ini akan mengambil setiap node atau atribut yang cocok dengan lokasi node yang telah ditentukan, yang dapat mengembalikan beberapa elemen juga, jika ada beberapa lokasi node dengan XPATH yang sama.
Tangani namespace di XQuery:
Dokumen XML dapat memiliki namespace dalam hierarki node XML. Jadi, Anda dapat menyebutkan pegangan namespace di XPATH atau menentukan * untuk melompati namespace.
ADA dengan XQuery
Fungsi XML existing() mengembalikan nilai BIT (0 atau 1) dan menunjukkan bahwa nilai tersebut ada atau tidak dengan pengaturan yang direferensikan. Misalnya, nilai elemen XML berkoordinasi dengan ekspresi XPATH dalam fungsi kemudian mengembalikan 1 lain 0. Dengan cara ini, kita harus memiliki kondisi sama dengan 1 atau 0. Ketika pengguna ingin mencocokkan kondisi, maka ada( ) sama dengan 1 dan untuk tidak ada bandingannya, seharusnya 0.
Klien dapat menempatkan berbagai kondisi dalam satu proklamasi XPATH. Pendekatan eksis() ini di mana penyediaan secara konsisten meningkatkan eksekusi ketika kita memiliki XML yang lebih besar dengan banyak data untuk diproses.
ADA termasuk nilai simpul XML:
Sesederhana pengguna dapat menggunakan beberapa kombinasi dari ada (), node (), nilai () dan kueri () dalam satu kueri SQL. Semuanya tergantung pada permintaan tentang sifat data untuk mencapai kinerja dan logika bisnis yang lebih baik.
Pengembang dapat menerapkan salah satu pendekatan di atas dengan simpul XML untuk memisahkan informasi dari kolom atau variabel XML dan dengan menggunakan ketentuan WHERE untuk menempatkan kondisi yang sama untuk menyaring nilai tertentu dari simpul atau elemen XML.