Makaleyi arkadaşlarınızla paylaşarak sitenin geliştirilmesine yardımcı olun!

PostgreSQL'e Giriş STRING_AGG()

PostgreSQL çeşitli toplama işlevlerini destekler, STRING_AGG() işlevi, dizeler listesini birleştirmek için kullanılan toplama işlevlerinden biridir ve bir sınırlayıcı sembolüne bir yer veya tüm öğeler arasına bir ayırıcı ekler. Teller. Ayırıcı veya sınırlayıcı sembolü, çıktı dizesinin sonuna eklenmez. PostgreSQL STRING_AGG() işlevi, dizeyle ilgili toplama seçeneğini gerçekleştirmek için kullanılan PostgreSQL 9.0 sürümünden desteklenir.Dizeleri birleştirmek için çeşitli türde ayırıcılar veya sınırlayıcı semboller kullanabiliriz.

Sözdizimi

Şu söz dizimini göz önünde bulundurun:

STRING_AGG ( ifade, ayırıcı|sınırlayıcı (order_by) )

Açıklama:

STRING_AGG() işlevi ORDER BY yan tümcesi girişini alır ve isteğe bağlı diğer iki bağımsız değişken aşağıdaki gibidir:

  1. expression: Bu, herhangi bir geçerli ifade olan bir karakter dizisidir.
  2. ayırıcı/sınırlayıcı: Bu, dize birleştirme için kullanılacak ayırıcıyı/sınırlayıcıyı tanımlar.

ORDER BY yan tümcesi, birleştirilmiş dize sonuçlarının sırasını tanımlayan isteğe bağlı bir yan tümcedir.

ORDER BY sözdizimine sahiptir:

ORDER BY ifade1 {ASC - TANIM}, (… )

PostgreSQL STRING_AGG() işlevi nasıl çalışır?

  1. Gerekli giriş ifadesi bir karakter dizisi veri türü olmalıdır. Diğer veri türlerini de kullanabiliriz, ancak yalnızca diğer veri türlerini karakter dizisi veri türüne açıkça aktardığımızdan emin olmamız gerekir.
  2. PostgreSQL STRING_AGG() bize sonucu string türünde döndürür.
  3. STRING_AGG(), MIN(), MAX(), AVG(), SUM() ve COUNT() vb. gibi diğer PostgreSQL toplama işlevlerini kullandığımız gibi, genellikle GROUP BY yan tümcesiyle birlikte kullanılır.

PostgreSQL STRING_AGG() işlevini Uygulama Örnekleri

CREATE TABLE ifadesini aşağıdaki gibi kullanarak 'öğrenci' ve 'ders' adında bir tablo oluşturacağız:

ÖĞRENCİ TABLOSU:

tablo oluştur öğrenci
(
stud_id seri BİRİNCİL ANAHTAR,
saplama_adı VARCHAR(80) NULL DEĞİL,
stud_grade CHAR(1) NULL DEĞİL,
stud_country VARCHAR(80) NULL DEĞİL,
Course_id int NULL DEĞİL
);

DERS TABLOSU:

tablo kursu oluştur
(
Course_id seri BİRİNCİL ANAHTAR,
kurs_adı VARCHAR(80) NULL DEĞİL
);

Şimdi, INSERT INTO ifadesini aşağıdaki gibi kullanarak 'course' tablosuna bazı veriler ekleyeceğiz:

Kursa EKLE(ders_adı)
DEĞERLER
('Bilgisayar'),
('Mekanik'),
('Sivil'),
('Elektrik');

Aşağıdaki SQL ifadesini ve anlık görüntüyü kullanarak yukarıdaki INSERT ifadesinin sonucunu gösterin.

kurstanseçin;

Şimdi, INSERT INTO deyimini aşağıdaki gibi kullanarak 'öğrenci' tablosuna bazı veriler ekleyeceğiz:

INSERT INTO Student(stud_name,stud_grade,stud_country,course_id)
DEĞERLER
('Smith','A','ABD',1),
('Johnson','B','ABD',2),
('Williams','C','ABD',3),
('Jones','C','Kanada',1),
('Kahverengi','B','Kanada',2),
('Davis','A','Kanada',3),
('Aarnav','A','Hindistan',1),
('Aarush','B','Hindistan',2),
('Aayush','C','Hindistan',3),
('Abdul','C','BAE',1),
('Ahmed','A','BAE',3),
('Ying', 'A','Çin',1),
('Yue','B','Çin',2),
('Feng', 'C','Çin',3),
('Mian','C','Güney Kore',1),
('Fei','B','Güney Kore',2),
('Hong','A','Güney Kore',3);

Aşağıdaki SQL ifadesini ve anlık görüntüyü kullanarak yukarıdaki INSERT ifadesinin sonucunu gösterin.

öğrencidenseçin;

"C.course_name kurs adı olarak SEÇ, öğrenci adı olarak s.stud_name"
c kursundan SAĞ KATIL öğrenci s ON c.course_id=s.course_id
1 TARAFINDAN SİPARİŞ;

Aşağıdaki anlık görüntüyü kullanarak yukarıdaki ifadenin sonucunu gösterin.

Yukarıdaki örnekte, sonuçta ortaya çıkan anlık görüntü, öğrencinin kursuyla eşleşen kurs için her satırı ayrı bir giriş olarak alıyor.

Yukarıdaki SQL ifadesini aşağıdaki gibi değiştirerek STRING_AGG() işlevini kullanarak öğrenci adlarını birleştirebiliriz:

SEÇ
"crs.course_name AS kurs adı,
""string_agg(stud.stud_name, &39;, &39;) AS öğrenci listesi
"Crs
kursundanKATIL öğrenci damızlık ON crs.course_id=stud.course_id
1
İLE GRUPLA
1 TARAFINDAN SİPARİŞ;

Aşağıdaki anlık görüntüyü kullanarak yukarıdaki ifadenin sonucunu gösterin.

stud_grade, STRING_AGG(stud_name,', ') AS StudentPerGrade
öğrencisindenStud_grade
TARAFINDAN GRUPLA
1 ADET SİPARİŞ ;

Aşağıdaki anlık görüntüyü kullanarak yukarıdaki ifadenin sonucunu gösterin.

Yukarıdaki örnekte, elde edilen anlık görüntü bize, benzer bir not elde edilen virgül ayırıcı ile birleştirilmiş öğrencilerin listesini gösterir.

"SEÇ STRING_AGG(stud_name, &39;, &39;) AS Student_names, stud_country"
öğrencisinden
Stud_country'ye göre GRUP;

Aşağıdaki anlık görüntüyü kullanarak yukarıdaki ifadenin sonucunu gösterin.

"

Yukarıdaki örnekte, aynı ülkeye ait tüm öğrencilerin bir arada gruplandığını ve virgül ayırıcı ile birleştirildiğini görebiliriz

Avantajlar

  1. ORDER BY deyimini kullanarak sonucun sırasını kontrol edebiliriz.
  2. PostgreSQL STRING_AGG() işlevi, sonucu dize biçiminde döndürür.
  3. Tüm dizeleri birleştirmek ve aralarına bir sınırlayıcı sembol veya ayırıcı eklemek için STRING_AGG() işlevini kullanabiliriz.
  4. PostgreSQL STRING_AGG(), çeşitli sınırlayıcı simge veya ayırıcı türlerini destekler ve dizenin sonunda sınırlayıcı simge veya ayırıcı içermez.

Sonuç

Yukarıdaki makaleden PostgreSQL STRING_AGG() işlevinin nasıl kullanılacağını ve PostgreSQL STRING_AGG() işlevinin nasıl çalıştığını anladığınızı umuyoruz. Ayrıca, ayrıntılı olarak anlamak için PostgreSQL STRING_AGG() işlevinin birkaç örneğini ekledik.

Makaleyi arkadaşlarınızla paylaşarak sitenin geliştirilmesine yardımcı olun!