mysql concat group_concat functions with examples
Bu eğitici, MySQL CONCAT'in Select ve GROUP_CONCAT işlevleriyle nasıl kullanılacağını sözdizimi ve pratik örneklerle açıklar:
CONCAT, iki veya daha fazla Dizeyi birleştirmek veya birleştirmek ve tek bir değer olarak geri dönmek için MySQL tarafından desteklenen bir Dize işlevidir. CONCAT adı, 2 veya daha fazla varlığı bir araya getirmek anlamına gelen fiil birleştirmesinden gelir.
Bu eğitimde, CONCAT'ın sorgu örnekleri ve MySQL tarafından sağlanan CONCAT işlevinin diğer varyasyonları ile kullanımını öğreneceğiz.
Ne öğreneceksin:
MySQL CONCAT İşlevi
Sözdizimi:
CONCAT işlevinin sözdizimi basittir. Yalnızca birleştirilmesi gereken Dizelerin virgülle ayrılmış bir listesini içerir.
CONCAT(string1, string2, ------ stringN)CONCAT işlevi tarafından beklenen hem girdi hem de çıktı türleri Dizelerdir. Sayılarla sağlanmış olsa bile, son çıktı String olacaktır.
Örneğin:
# 1) Dizeler olarak girdi türleri ile.
SELECT CONCAT('string1', 'string2'); //Output string1string2#iki) Sayılar / kayan noktalı sayılar olarak giriş ile.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342CONCAT'ı SELECT İfadeleriyle Kullanma
CONCAT, en yaygın olarak, 2 veya daha fazla sütundan gelen verileri tek bir sütunda birleştirebildiği SELECT sorgularının yanında kullanılır.
Klasik bir örnek, firstName ve lastName alanları için ayrı sütunlara sahip bir tablomuz olduğunu varsayalım. Dolayısıyla, verileri görüntülerken, bunun firstName ve lastName yerine FullName'i gösterme arzusu olduğunu varsayalım. CONCAT'ı kullanabilir ve seçilen verileri buna göre görüntüleyebiliriz.
Bunu iş başında görelim.
c c ++ ve java arasındaki fark
İlk olarak, kimlik, ad, soyad, yaş, doğum tarihi ve bölüm gibi alanları içeren bir Öğrenci tablosu oluşturun.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));Tabloya bazı sahte veriler ekleyin.
INSERT INTO student values (1,'Darren', 'Still', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 'Kumar', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 'Singh', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 'Johnson', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 'Shamungam', 20, '2000-05-12', 'TRAINEE');Şimdi, adı ve soyadı birleştiren birleştirilmiş bir dize olarak tam adı almak için bir SELECT sorgusu yazın.
SELECT CONCAT(fname,lname) as fullName from student//Çıktı
| Ad Soyad |
|---|
| Darren Hala |
| AbhishekKumar |
| AmitSingh |
| StevenJohnson |
| KartikShamungam |
Yukarıdaki çıktıda görebileceğiniz gibi, ad ve soyadı arasında boşluk yoktur, bu da onu okunamaz hale getirir. Birleştirilecek dizge olarak fazladan bir boşluk karakterine sahip olmak için CONCAT işlevini güncelleyerek boşluk ekleyebiliriz.
SELECT CONCAT(fname, ' ', lname) as fullName from studentBu, her girişte aralarında fazladan boşluk olmasını sağlar.
CONCAT'ı GROUP ile kullanma
MySQL, GROUP_CONCAT adlı başka bir işlev sağlar.
CONCAT'a benzer, ancak CONCAT'ın sütunlar arasında değerleri birleştirmek için kullanıldığı şekilde farklılık gösterirken, GROUP_CONCAT işlevi çoğunlukla satırlar arasında değerleri birleştirmek için kullanılır.
MySQL GROUP_CONCAT Sözdizimi
SELECT col1, col2, ..., colN GROUP_CONCAT ( (DISTINCT) col_name1 (ORDER BY clause) (SEPARATOR str_val) ) FROM table_name GROUP BY col_name2;Dolayısıyla, GROUP_CONCAT işlevinde şunları görebilirsiniz:
- col_name: Bu, birleştirmek istediğiniz sütundur. Değerlerin tekrarlanmasını önlemek için isteğe bağlı bir DISTINCT yan tümcesi vardır.
- TARAFINDAN SİPARİŞ: ORDER BY yan tümcesi, birleştirilmiş liste içindeki sırayı belirtmek için kullanılır ve isteğe bağlıdır.
- AYIRICI: Bu yine, birleştirilmiş değerler arasında özel bir ayırıcı tanımlamak için kullanılabilen isteğe bağlı bir cümledir. Varsayılan olarak, virgül (,) ayırıcıdır.
MySQL GROUP_CONCAT Örnekleri
Yukarıdaki Öğrenci tablosu örneğinde, varsayalım ki birleştirilmiş departmanların bir listesini bulun .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEEYukarıdaki sorguda,
- Çıktı, departman sütununda bulunan tüm departmanların virgülle ayrılmış bir listesini içerir.
- Ayrıca, tekrar eden değerler vardır ( Örneğin, MÜHENDİSLİK) bir DISTINCT cümlesi belirtmediğimiz için.
DISTINCT cümlesiyle aynı örneği deneyelim:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEEBu sadece bölüm sütununun farklı değerlerini döndürür.
Şimdi, bölüm adlarının artan sırada sıralanması için '|' ve ORDER BY yan tümcesi olarak özel bir ayırıcı ekleyin
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEEDolayısıyla, yukarıdaki sorguda,
- Departman adları artan sırada sıralanır.
- Yinelenen değer döndürülmez.
- Ayırıcı ',' yerine '| ‘.
Görelim her bölümdeki öğrencilerin birleştirilmiş değerlerini listelemek için başka bir örnek.
Burada, bir bölümdeki 2 öğrenci aynı ada sahip olabileceğinden DISTINCT olmasını istemeyiz.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department// Çıktı
| Bölüm | öğrenciler |
|---|---|
| MUHASEBE | Abhishek |
| MÜHENDİSLİK | Amit | Darren |
| İNSAN KAYNAKLARI | Steven |
| STAJYER | Kartik |
CONCAT ve GROUP_CONCAT birleştiriliyor
Yukarıdaki örnekte, her departmanla birlikte BİRLEŞİK ad ve soyad değerlerini göstermek istediğimizi varsayalım.
Bunu başarmak için CONCAT'ı GROUP_CONCAT komutu içinde kullanabiliriz.
Bunu aşağıda eylem halinde görelim:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department//Çıktı
| Bölüm | öğrenciler |
|---|---|
| MUHASEBE | Abhishek kumar |
| MÜHENDİSLİK | Amit Singh | Darren Still |
| İNSAN KAYNAKLARI | Steven Johnson |
| STAJYER | Kartik shamungam |
CONCAT ile NULL Değerleri İşleme
CONCAT, String argümanlarını bekler ve çıktıyı String olarak döndürür.
CONCAT işlevinin herhangi bir girdisi NULL ise, çıktı da NULL olacaktır.
SELECT CONCAT('string1','string2', NULL); //Output NULLNULL değerleri işlemek için, CONCAT işlevi içinde, sütundan NULL değeri olması durumunda varsayılan veya boş bir değer sağlayan bir ifNull ifadesini kullanabilirsiniz.
Yukarıdaki örnekte olduğu gibi CONCAT için 2 String ve 1 NULL değerimiz olduğunu varsayalım.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2helloYukarıdaki sorguda, NULL değerini çevreleyen bir ifNull işlevi (veya NULL olabilecek bir sütun) ekledik - eğer NULL eşleşme başarılı olursa, o zaman 'merhaba', yoksa gerçek sütun değerini döndürür.
Sonuçta, NULL dizesinin 'merhaba' yazdırıldığını görebilirsiniz.
Sıkça Sorulan Sorular
S # 1) MySQL'de sütunları nasıl birleştiririm?
Cevap: MySQL, bir veya daha fazla tablodan 2 veya daha fazla sütunu birleştirmek veya birleştirmek ve çıktıdaki birleştirilmiş değerleri döndürmek için bir CONCAT işlevi sağlar.
S # 2) MySQL'de concat yöntemini nerede ve ne zaman kullanmalıyım?
Cevap: CONCAT yöntemi genellikle 2 veya daha fazla sütunu birleştirmek ve bunları tek bir sütun olarak göstermek isteyeceğiniz sorgu sonuçlarının görüntülenmesine karşı kullanılır.
Örneğin, adı ve soyadı ayrı sütunlar olarak içeren bir tablonuz olduğunu ve bunları tamAdı adlı tek bir varlık olarak görüntülemek istediğinizi varsayalım - o zaman ad ve soyad sütununun değerlerini birleştirmek ve bunları birlikte görüntülemek için CONCAT işlevini kullanabilirsiniz. tek sütun olarak.
S # 3) MySQL GROUP_CONCAT nedir?
Cevap: CONCAT'a benzer şekilde, MySQL GROUP_CONCAT bir tablo boyunca değerleri birleştirmek için de kullanılır. Buradaki fark, CONCAT değerleri sütunlar arasında birleştirmek için kullanılırken, GROUP_CONCAT size satırlar arasında değerleri birleştirme yeteneği verir.
İstenilen sonuçları döndürmek için hem GROUP_CONCAT hem de CONCAT'ın birleştirilebileceğine dikkat etmek de önemlidir.
GROUP_CONCAT genellikle, satırlar arasında değerleri GRUPLAMAK veya birleştirmek istediğiniz senaryolarda kullanılır. Örneğin - ürün adı ve kategorisi olan bir ürün tablonuz var ve belirli bir kategoriye göre tüm ürünleri virgülle ayrılmış değerler olarak listelemek istiyorsunuz - daha sonra GROUP_CONCAT kullanabilirsiniz.
Sorgu:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryNameS # 4) CONCAT komutunu kullanarak bir ayırıcıyı nasıl belirtebilirim?
Cevap: CONCAT ile, ayırıcıyı birleştirilecek ayrı bir dize olarak belirtebilirsiniz.
Örneğin: Ayırıcı olarak '|' kullanmak istediğinizi varsayalım, CONCAT komutunda bu dizeyi birleştirdiğiniz sütun adları arasında belirtebilirsiniz.
SELECT CONCAT(fname, '| ', lname) as fullName from studentS # 5) CONCAT ve CONCAT_WS komutları arasındaki fark nedir?
Cevap: CONCAT_WS, bir kullanıcının birleştirilen sütunlar için bir ayırıcı belirlemesini sağlayan MySQL tarafından sağlanan başka bir CONCAT varyasyonudur.
Bu, daha fazla sayıda sütunu birleştirmek ve birleştirilmiş tüm sütunlar için aynı ayırıcıyı kullanmak istediğiniz durumlarda CONCAT yerine tercih edilir.
Misal: Alan adı, lname ve adres gibi alanları olan bir masa öğrencisi olduğunu varsayalım.
Şimdi bu üç alanı birleştirip '|' ile ayırmak istiyoruz.
Kullanma CONCAT , ayırıcıyı birleştirilecek ayrı bir dize olarak belirtmemiz gerekir.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from studentİle iken CONCAT_WS ayırıcıyı yalnızca bir kez belirtmeniz gerekir.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from studentSonuç
Bu eğitimde MySQL CONCAT işlevi ve kullanımı hakkında bilgi edindik. Bu işlev, değerleri farklı sütunlarla birleştirmek için sorgu sonuçlarını görüntülerken genellikle çok yararlıdır.
CONCAT işlevinin 2 farklı varyasyonunu da öğrendik - biri CONCAT_WS kullanarak bir ayırıcıyla bitiştirme ve diğeri MySQL GROUP_CONCAT işlevini kullanarak satırların değerlerini birleştirmedir.
Önerilen Kaynaklar
- MySQL JOIN Eğitimi: İç, Dış, Çapraz, Sol, Sağ ve Öz
- MySQL UNION - Birlik Örnekleriyle Kapsamlı Eğitim
- Örneklerle MySQL Tarih Formatı ve Zaman Damgası İşlevleri
- MySQL Tabloya Ekle - İfade Sözdizimi ve Örnekler Ekle
- MySQL Güncelleme Bildirimi Eğitimi - Sorgu Sözdizimini ve Örnekleri Güncelleme
- MySQL Kod Örnekleriyle Görünüm Öğreticisini Oluştur
- Kod Örnekleriyle C # İşlevleri / Yöntemleri Öğreticisi