PostgreSQL

PostgreSQL UNNEST Örnekleri

PostgreSQL UNNEST Örnekleri
PostgreSQL'de bir sütunu yalnızca uygun veri türleri dizisi olarak belirtebilirsiniz. Yerleşik, kullanıcı tarafından belirtilen ve devredilemez veri türleri tüm olasılıklardır. Bunun dışında diziler PostgreSQL'de çok önemlidir. ARRAY yöntemiyle dizilerin nasıl oluşturulacağını, sorgulanacağını ve hatta bazen oluşturulacağını da içeren PostgreSQL'deki diziler hakkında bilgi edindiniz. Ancak, tersini yapmak ve bir PostgreSQL dizisini satırlara dönüştürmek istediğim zamanlar var. Bunu yapmak istemenizin birçok nedeni var. Bir süreliğine iki dizinin birleşimini aradığınızı varsayalım. PostgreSQL'de INTERSECT operatörü bunu iki farklı satır kümesi için etkili bir şekilde yapabilir. Ancak dizilerin karşılığı yoktur. Benzer şekilde, UNION operatörü 2 çift satırı birleştirir; ancak, diziler için karşılaştırılabilir hiçbir şey yoktur. UNNEST yöntemi tüm bunların sırrı gibi görünüyor. UNNEST'i tüketirken dikkatli olmalısınız, çünkü (çoğu bilgisayar sisteminde olduğu gibi) PostgreSQL, tam olarak yapmasını istediğiniz şeyi değil, yapmasını istediğiniz her şeyi yapar.

Bu konsepti tam olarak detaylandırmak için, sisteminizde yüklü olan PostgreSQL komut satırı kabuğunu açın. Varsayılan seçeneklerle çalışmaya başlamak istemiyorsanız, belirli bir kullanıcı için sunucu adını, veritabanı adını, bağlantı noktası numarasını, kullanıcı adını ve parolayı sağlayın. Varsayılan parametrelerle çalışmak istiyorsanız, her seçeneği boş bırakın ve Her seçeneği girin'e basın. Artık komut satırı kabuğunuz üzerinde çalışmaya hazır.

Örnek 01: Dizi Türü Verilerini Tanımlayın

Veritabanındaki dizi değerlerini değiştirmeye geçmeden önce temel bilgileri incelemek iyi bir fikirdir. İşte bir metin türü listesi belirtmenin yolu. Çıktının SELECT yan tümcesini kullanarak metin türü listesini gösterdiğini görebilirsiniz.

>> SEÇ 'Aksa, Raza, Said'::text[];

Sorgu yazarken veri tipi tanımlanmalıdır. Bir dize gibi görünüyorsa, PostgreSQL veri türünü tanımayacaktır. Alternatif olarak, sorguda aşağıda gösterildiği gibi dize türü olarak belirtmek için ARRAY[] biçimini kullanabiliriz. Aşağıda belirtilen çıktıdan, verilerin SELECT sorgusu kullanılarak dizi tipi olarak getirildiğini görebilirsiniz.

>> DİZİ SEÇ['Aksa', 'Raza', 'Saeed'];

FROM yan tümcesini kullanırken SELECT sorgusu ile aynı dizi verilerini seçtiğinizde, olması gerektiği gibi çalışmaz. Örneğin, kabuktaki aşağıdaki FROM yan tümcesi sorgusunu deneyin. Bir hata ile gelip gelmediğini kontrol edeceksiniz. Bunun nedeni, SELECT FROM yan tümcesinin getirdiği verilerin muhtemelen bir satır grubu veya bir tablodaki bazı noktalar olduğunu varsaymasıdır.

>> DİZİDEN * SEÇ ['Aksa', 'Raza', 'Saeed'];

Örnek 02: Diziyi Satırlara Dönüştür

ARRAY[], atomik bir değer döndüren bir işlevdir. Sonuç olarak, verilerimiz 'satır' biçiminde olmadığı için FROM yan tümcesine değil, yalnızca SELECT ile uyar. Bu yüzden yukarıdaki örnekte bir hata aldık. Sorgunuz yan tümceyle çalışmıyorken dizileri satırlara dönüştürmek için UNNEST işlevini nasıl kullanacağınız aşağıda açıklanmıştır.

>> KUSURSUZ SEÇ (ARRAY['Aksa', 'Raza', 'Saeed']);

Örnek 03: Satırları Diziye Dönüştür

Satırları tekrar bir diziye dönüştürmek için, bunu yapmak için o belirli sorguyu bir sorgu içinde tanımlamamız gerekir. Burada iki SELECT sorgusunu kullanmanız gerekir. Dahili bir seçme sorgusu, UNNEST işlevini kullanarak bir diziyi satırlara dönüştürüyor. Harici SELECT sorgusu, aşağıda belirtilen resimde gösterildiği gibi, tüm bu satırları tekrar tek bir diziye dönüştürürken. Dikkat et; harici SELECT sorgusunda daha küçük 'dizi' yazımlarını kullanmanız gerekir.

>> SELECT dizi(NNEST SEÇ (ARRAY ['Aksa', 'Raza', 'Saeed']));

Örnek 04: DISTINCT Cümlesini Kullanarak Yinelenenleri Kaldırın

DISTINCT, herhangi bir veri biçiminden kopyaları çıkarmanıza yardımcı olabilir. Ancak, mutlaka veri olarak satırların kullanılmasını gerektirir. Bu, bu yöntemin tamsayılar, metin, kayan noktalar ve diğer veri türleri için çalıştığı, ancak dizilere izin verilmediği anlamına gelir. Yinelenenleri kaldırmak için önce dizi türü verilerinizi UNNEST yöntemini kullanarak satırlara dönüştürmeniz gerekir. Bundan sonra, bu dönüştürülmüş veri satırları DISTINCT yan tümcesine iletilecektir. Dizinin satırlara dönüştürüldüğünü, ardından DISTINCT yan tümcesi kullanılarak yalnızca bu satırlardan farklı değerlerin getirildiğini aşağıdaki çıktıya bir göz atabilirsiniz.

>> SELECT DISTINCT UNNEST( 'Aksa, Raza, Said, Raza, Uzma, Aksa'::text[]);

Çıktı olarak bir diziye ihtiyacınız varsa, ilk SELECT sorgusunda array() işlevini kullanın ve sonraki SELECT sorgusunda DISTINCT yan tümcesini kullanın. Çıktının satırda değil dizi biçiminde gösterildiğini görüntülenen görüntüden görebilirsiniz. Çıktı yalnızca farklı değerler içeriyor olsa da.

>> SELECT dizi( SELECT DISTINCT UNNEST('Aksa, Raza, Saeed, Raza, Uzma, Aksa'::text[]));

Örnek 05: ORDER BY Cümlesini Kullanırken Yinelenenleri Kaldırın

Yinelenen değerleri, aşağıda gösterildiği gibi kayan tip dizisinden de kaldırabilirsiniz. Farklı sorgunun yanı sıra, belirli bir değerin sıralama düzeninde sonucu almak için ORDER BY yan tümcesini kullanacağız. Bunu yapmak için komut satırı kabuğunda aşağıda belirtilen sorguyu deneyin.

>> FARKLI UNNEST SEÇ( '2,85, 2.73, 2.85, 1.8, 2.73'::float[] ) ORDER BY 1;

İlk olarak, dizi UNNEST işlevi kullanılarak satırlara dönüştürülmüştür; daha sonra, bu satırlar, aşağıda gösterildiği gibi ORDER BY yan tümcesi kullanılarak artan düzende sıralanacaktır.

Satırları tekrar bir diziye dönüştürmek için, küçük bir alfabetik dizi() işleviyle kullanırken kabukta aynı SELECT sorgusunu kullanın. Dizinin önce satırlara dönüştürüldüğü, ardından yalnızca farklı değerlerin seçildiği aşağıdaki çıktıya bir göz atabilirsiniz. Sonunda, satırlar tekrar bir diziye dönüştürülecek.

>> Diziyi SEÇ( AYIRICI UNNEST SEÇ('2,85, 2).73, 2.85, 1.8, 2.73'::float[] ));

Sonuç:

Son olarak, bu kılavuzdaki her örneği başarıyla uyguladınız. Örneklerde UNNEST(), DISTINCT ve array() yöntemini uygularken herhangi bir sorun yaşamadığınızı umuyoruz.

Linux'ta oyun oturumunuzu nasıl yakalar ve yayınlarsınız?
Geçmişte oyun oynamak sadece bir hobi olarak görülüyordu, ancak zamanla oyun endüstrisi teknoloji ve oyuncu sayısı açısından büyük bir büyüme gördü. Ç...
El Takibiyle Oynanabilecek En İyi Oyunlar
Oculus Quest kısa süre önce, kontrolörler olmadan elle takip etme harika fikrini tanıttı. Resmi olarak veya SideQuest aracılığıyla destek sağlayan sür...
Tam Ekran Linux Uygulamalarında ve Oyunlarında OSD Yerleşimi Nasıl Gösterilir
Tam ekran oyunlar oynamak veya uygulamaları dikkat dağıtmayan tam ekran modunda kullanmak, bir panelde veya görev çubuğunda görünen ilgili sistem bilg...