PostgreSQL

Contoh PostgreSQL UNNEST

Contoh PostgreSQL UNNEST
Anda boleh menentukan lajur di PostgreSQL sebagai susunan jenis data yang sesuai. Jenis data yang dibina, ditentukan pengguna, dan tidak dapat dilupakan adalah semua kemungkinan. Selain itu, tatasusunan sangat relevan dalam PostgreSQL. Anda telah belajar mengenai tatasusunan dalam PostgreSQL, termasuk bagaimana membina, membuat pertanyaan, dan kadang-kadang bahkan menghasilkan tatasusunan dengan kaedah ARRAY. Namun, ada kalanya saya ingin melakukan sebaliknya dan menukar susunan PostgreSQL menjadi baris. Terdapat banyak sebab mengapa anda mahu melakukan ini. Untuk sementara waktu, katakan anda mencari persimpangan dua tatasusunan. Dalam PostgreSQL, pengendali INTERSECT dapat melakukannya dengan berkesan untuk dua set baris yang berbeza. Walau bagaimanapun, tidak ada rakan sejawat untuk tatasusunan. Begitu juga, pengendali UNION menyertai 2 pasang baris; namun, tidak ada yang setanding dengan tatasusunan. Kaedah UNNEST nampaknya menjadi rahsia untuk semua ini. Semasa menggunakan UNNEST, anda mesti berhati-hati kerana (seperti kebanyakan sistem komputer) PostgreSQL akan melakukan apa sahaja yang anda suruh lakukan, tidak seperti yang anda mahukan.

Untuk menghuraikan konsep ini sepenuhnya, buka shell baris perintah PostgreSQL yang terpasang di sistem anda. Berikan nama pelayan, nama pangkalan data, nombor port, nama pengguna, dan kata laluan untuk pengguna tertentu jika anda tidak mahu mula bekerja dengan pilihan lalai. Sekiranya anda ingin bekerja dengan parameter lalai, biarkan setiap pilihan kosong dan tekan Enter setiap pilihan. Sekarang shell baris perintah anda sudah siap untuk diusahakan.

Contoh 01: Tentukan Data Jenis Array

Adalah idea yang baik untuk mempelajari asas-asasnya sebelum beralih ke mengubah nilai array dalam pangkalan data. Inilah cara untuk menentukan senarai jenis teks. Anda dapat melihat output telah menunjukkan senarai jenis teks menggunakan klausa SELECT.

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

Jenis data mesti ditentukan semasa menulis pertanyaan. PostgreSQL tidak akan mengenali jenis data sekiranya kelihatan seperti rentetan. Sebagai alternatif, kami mungkin menggunakan format ARRAY [] untuk menentukannya sebagai jenis rentetan, seperti yang ditunjukkan di dalam pertanyaan. Dari output yang dikutip di bawah ini, Anda dapat melihat bahwa data telah diambil sebagai jenis array menggunakan pertanyaan SELECT.

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

Apabila anda memilih data array yang sama dengan pertanyaan SELECT semasa menggunakan klausa FROM, ia tidak berfungsi sebagaimana mestinya. Sebagai contoh, cubalah pertanyaan di bawah klausa FROM di shell. Anda akan memastikan bahawa ia akan mendapat ralat. Ini kerana klausa SELECT FROM mengandaikan bahawa data yang diambilnya mungkin sekumpulan baris atau beberapa titik dari jadual.

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

Contoh 02: Tukar Array Menjadi Baris

ARRAY [] adalah fungsi yang mengembalikan nilai atom. Akibatnya, hanya sesuai dengan SELECT dan bukan dengan klausa FROM kerana data kami tidak dalam bentuk 'baris'. Itulah sebabnya kami mendapat ralat dalam contoh di atas. Berikut adalah cara menggunakan fungsi UNNEST untuk menukar tatasusunan menjadi baris semasa pertanyaan anda tidak berfungsi dengan klausa.

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

Contoh 03: Tukarkan Baris Ke dalam Susunan

Untuk menukar baris menjadi array lagi, kita harus menentukan pertanyaan tertentu dalam pertanyaan untuk melakukannya. Anda mesti menggunakan dua pertanyaan PILIH di sini. Pertanyaan pilih dalaman menukar array menjadi baris menggunakan fungsi UNNEST. Sementara pertanyaan SELECT luaran sekali lagi mengubah semua baris menjadi satu array, seperti yang ditunjukkan dalam gambar yang dikutip di bawah. Berhati-hati; anda mesti menggunakan ejaan 'array' yang lebih kecil dalam pertanyaan SELECT luaran.

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

Contoh 04: Buang Pendua Menggunakan Klausa DISTINCT

DISTINCT dapat membantu anda mengekstrak pendua dari sebarang bentuk data. Walau bagaimanapun, ia semestinya memerlukan penggunaan baris sebagai data. Ini bermaksud kaedah ini berfungsi untuk bilangan bulat, teks, terapung, dan jenis data lain, tetapi tatasusunan tidak dibenarkan. Untuk membuang pendua, anda mesti menukar data jenis array anda menjadi baris menggunakan kaedah UNNEST. Selepas itu, baris data yang ditukar ini akan diteruskan ke klausa DISTINCT. Anda dapat melihat output di bawah ini, bahawa susunan telah diubah menjadi baris, maka hanya nilai yang berbeza dari baris ini yang diambil menggunakan klausa DISTINCT.

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

Sekiranya anda memerlukan array sebagai output, gunakan fungsi array () dalam pertanyaan SELECT pertama dan gunakan klausa DISTINCT dalam pertanyaan SELECT seterusnya. Anda dapat melihat dari gambar yang dipaparkan bahawa output telah ditunjukkan dalam bentuk array, bukan dalam baris. Sementara output hanya mengandungi nilai yang berbeza.

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

Contoh 05: Buang Pendua Semasa Menggunakan PESANAN OLEH Klausa

Anda juga dapat menghapus nilai pendua dari susunan jenis apungan, seperti yang ditunjukkan di bawah. Bersama dengan pertanyaan yang berbeza, kami akan menggunakan klausa ORDER BY untuk mendapatkan hasil dalam urutan penyortiran nilai tertentu. Cuba pertanyaan yang dinyatakan di bawah di shell baris perintah untuk melakukannya.

>> PILIH DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []) PESANAN OLEH 1;

Pertama, tatasusunan telah ditukar menjadi baris menggunakan fungsi UNNEST; kemudian, baris-baris ini akan disusun mengikut urutan menaik dengan menggunakan klausa ORDER BY seperti yang ditunjukkan di bawah.

Untuk menukar baris lagi menjadi array, gunakan pertanyaan SELECT yang sama di shell sambil menggunakannya dengan fungsi array abjad kecil (). Anda dapat melihat output di bawah bahawa array telah diubah menjadi baris terlebih dahulu, kemudian hanya nilai yang berbeza yang telah dipilih. Akhirnya, baris akan ditukar menjadi array lagi.

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

Kesimpulan:

Akhirnya, anda berjaya melaksanakan setiap contoh dari panduan ini. Kami harap anda tidak menghadapi masalah semasa menjalankan kaedah UNNEST (), DISTINCT, dan array () dalam contoh.

Cara Memasang League Of Legends di Ubuntu 14.04
Sekiranya anda peminat League of Legends, maka ini adalah peluang bagi anda untuk menguji menjalankan League of Legends. Perhatikan bahawa LOL disokon...
Pasang permainan Strategi OpenRA terkini di Ubuntu Linux
OpenRA adalah mesin permainan Strategi Masa Nyata / Bebas yang mencipta semula permainan Westwood awal seperti Command & Conquer klasik: Makluman Mera...
Pasang Dolphin Emulator terkini untuk Gamecube & Wii di Linux
Dolphin Emulator membolehkan anda memainkan permainan Gamecube & Wii pilihan anda di Komputer Peribadi Linux (PC). Menjadi emulator permainan sumber ...