PostgreSQL

Contoh PostgreSQL UNNEST

Contoh PostgreSQL UNNEST
Anda dapat menentukan kolom di PostgreSQL hanya sebagai array dari tipe data yang sesuai. Tipe data bawaan, ditentukan pengguna, dan tidak dapat dicabut adalah semua kemungkinan. Selain itu, array sangat relevan di PostgreSQL. Anda telah belajar tentang array di PostgreSQL, termasuk cara membuat, membuat kueri, dan terkadang bahkan menghasilkan array dengan metode ARRAY. Namun, ada kalanya saya ingin melakukan kebalikannya dan mengonversi array PostgreSQL menjadi baris. Ada banyak alasan mengapa Anda ingin melakukan ini. Untuk sementara, katakanlah Anda mencari persimpangan dua array array. Di PostgreSQL, operator INTERSECT dapat secara efektif melakukan ini untuk dua set baris yang berbeda. Namun, tidak ada pasangan untuk array. Demikian juga, operator UNION menggabungkan 2 pasang baris; namun, tidak ada yang sebanding dengan array. Metode UNNEST tampaknya menjadi rahasia untuk semua ini. Saat mengonsumsi UNNEST, Anda harus berhati-hati karena (seperti kebanyakan sistem komputer) PostgreSQL akan melakukan apa pun yang Anda perintahkan, bukan persis seperti yang Anda inginkan.

Untuk menguraikan konsep ini sepenuhnya, buka shell baris perintah PostgreSQL yang diinstal di sistem Anda. Berikan nama server, nama database, nomor port, nama pengguna, dan kata sandi untuk pengguna tertentu jika Anda tidak ingin mulai bekerja dengan opsi default. Jika Anda ingin bekerja dengan parameter default, biarkan setiap opsi kosong dan tekan Enter setiap opsi. Sekarang shell baris perintah Anda siap untuk dikerjakan.

Contoh 01: Tentukan Data Tipe Array

Sebaiknya pelajari dasar-dasarnya sebelum beralih ke memodifikasi nilai array dalam database. Berikut adalah cara untuk menentukan daftar jenis teks. Anda dapat melihat output telah menunjukkan daftar jenis teks menggunakan klausa SELECT.

>> PILIH 'Aqsha, Raza, Saeed'::teks[];

Jenis data harus ditentukan saat menulis kueri. PostgreSQL tidak akan mengenali tipe data jika tampaknya berupa string. Atau, kita mungkin menggunakan format ARRAY[] untuk menentukannya sebagai tipe string, seperti yang ditunjukkan di bawah ini dalam kueri. Dari output yang dikutip di bawah, Anda dapat melihat bahwa data telah diambil sebagai tipe array menggunakan kueri SELECTSELECT.

>> PILIH ARRAY['Aqsha', 'Raza', 'Saeed'];

Saat Anda memilih data array yang sama dengan kueri SELECT saat menggunakan klausa FROM, itu tidak berfungsi sebagaimana mestinya. Misalnya, coba kueri klausa FROM di bawah ini di shell. Anda akan memeriksa apakah itu akan muncul dengan kesalahan. Ini karena klausa SELECT FROM mengasumsikan bahwa data yang diambilnya mungkin adalah sekelompok baris atau beberapa titik dari sebuah tabel.

>> PILIH * DARI ARRAY ['Aqsha', 'Raza', 'Saeed'];

Contoh 02: Ubah Array Menjadi Baris

ARRAY[] adalah fungsi yang mengembalikan nilai atom. Akibatnya, ini hanya cocok dengan SELECT dan tidak dengan klausa FROM karena data kami tidak dalam bentuk 'baris'. Itu sebabnya kami mendapat kesalahan dalam contoh di atas. Berikut adalah cara menggunakan fungsi UNNEST untuk mengonversi array menjadi baris saat kueri Anda tidak berfungsi dengan klausa.

>> PILIH UNNEST (ARRAY['Aqsha', 'Raza', 'Saeed']);

Contoh 03: Ubah Baris Menjadi Array

Untuk mengonversi baris menjadi array lagi, kita harus mendefinisikan kueri tertentu di dalam kueri untuk melakukannya. Anda harus menggunakan dua kueri SELECT di sini. Kueri pemilihan internal mengonversi larik menjadi baris menggunakan fungsi UNNEST. Sementara kueri SELECT eksternal sekali lagi mengonversi semua baris itu menjadi satu larik, seperti yang ditunjukkan pada gambar yang dikutip di bawah ini. Hati-Hati; anda harus menggunakan ejaan 'array' yang lebih kecil di kueri SELECT eksternal.

>> SELECT array(SELECT UNNEST (ARRAY ['Aqsha', 'Raza', 'Saeed']));

Contoh 04: Hapus Duplikat Menggunakan Klausa DISTINCT

DISTINCT dapat membantu Anda mengekstrak duplikat dari segala bentuk data. Namun, itu tentu membutuhkan penggunaan baris sebagai data. Ini berarti bahwa metode ini berfungsi untuk bilangan bulat, teks, float, dan tipe data lainnya, tetapi array tidak diizinkan. Untuk menghapus duplikat, Anda harus terlebih dahulu mengonversi data tipe array menjadi baris menggunakan metode UNNEST. Setelah itu, baris data yang dikonversi ini akan diteruskan ke klausa DISTINCT. Anda dapat melihat sekilas output di bawah ini, bahwa array telah diubah menjadi baris, kemudian hanya nilai yang berbeda dari baris ini yang diambil menggunakan klausa DISTINCT.

>> PILIH DISTINCT UNNEST( 'Aqsha, Raza, Saeed, Raza, Uzma, Aqsa'::text[]);

Jika Anda memang membutuhkan array sebagai output, gunakan fungsi array() dalam kueri SELECT pertama dan gunakan klausa DISTINCT dalam kueri SELECT berikutnya. Anda dapat melihat dari gambar yang ditampilkan bahwa output telah ditampilkan dalam bentuk array, bukan dalam baris. Sementara output hanya berisi nilai yang berbeda.

>> SELECT array( SELECT DISTINCT UNNEST('Aqsha, Raza, Saeed, Raza, Uzma, Aqsa'::text[]));

Contoh 05: Hapus Duplikat Saat Menggunakan ORDER BY Clause

Anda juga dapat menghapus nilai duplikat dari array tipe float, seperti yang ditunjukkan di bawah ini. Seiring dengan kueri yang berbeda, kami akan menggunakan klausa ORDER BY untuk mendapatkan hasil dalam urutan pengurutan nilai tertentu. Coba kueri yang dinyatakan di bawah ini di shell baris perintah untuk melakukannya.

>> PILIH BERBEDA UNNES( '2,85, 2.73, 2.85, 1.8, 2.73'::float[] ) ORDER OLEH 1;

Pertama, array telah diubah menjadi baris menggunakan fungsi UNNEST; kemudian, baris-baris ini akan diurutkan ke dalam urutan naik dengan menggunakan klausa ORDER BY seperti yang ditunjukkan di bawah ini:.

Untuk mengonversi baris lagi menjadi array, gunakan kueri SELECT yang sama di shell saat menggunakannya dengan fungsi array abjad kecil (). Anda dapat melihat sekilas pada output di bawah ini bahwa array telah diubah menjadi baris terlebih dahulu, kemudian hanya nilai yang berbeda yang dipilih. Akhirnya, baris akan diubah menjadi array lagi.

>> SELECT array( SELECT DISTINCT UNNES( '2,85, 2.73, 2.85, 1.8, 2.73'::float[] ));

Kesimpulan:

Akhirnya, Anda telah berhasil menerapkan setiap contoh dari panduan ini. Kami harap Anda tidak mengalami masalah saat melakukan metode UNNEST(), DISTINCT, dan array() dalam contoh.

OpenTTD vs Simutrans
Membuat simulasi transportasi Anda sendiri bisa menyenangkan, santai, dan sangat menarik. Itulah mengapa Anda perlu memastikan bahwa Anda mencoba game...
Tutorial OpenTTD
OpenTTD adalah salah satu game simulasi bisnis paling populer di luar sana. Dalam game ini, Anda perlu membuat bisnis transportasi yang luar biasa. Na...
SuperTuxKart untuk Linux
SuperTuxKart adalah judul hebat yang dirancang untuk memberi Anda pengalaman Mario Kart gratis di sistem Linux Anda. Ini cukup menantang dan menyenang...