Kendime Not #2: MySQL sütunları birleştirme (CONCAT)

Kendime Not #2: MySQL sütunları birleştirme (CONCAT)

Bazen veritabanında birden fazla sütunda tuttuğumuz verileri birleştirmek ve o şekilde kullanmak isteriz. Bu aynı tablonun sütunları olabileceği gibi farklı tabloların sütunları da olabilir. Bu işlemi sunucu tabanlı scriptinize (PHP, ASP.NET gibi) yıkmaktansa verileri SQL sorgunuzda birleştirerek veritabanından birlikte çekmek scriptinizin yükünü azaltacaktır.

Aynı tablodan sütunları birleştirmek:

SELECT id,CONCAT(adi,soyadi) AS adisoyadi FROM uyeler

burada CONCAT() fonksiyonu adi ve soyadi sütunlarını sadece birleştirir. Yani çıktımız: “MuhittinÖzer” şeklinde olur.

Verileri birleştirirken ayırıcı kullanmak:

SELECT id,CONCAT_WS(' ',adi,soyadi) AS adisoyadi FROM uyeler

bu sefer kullandığımız CONCAT_WS() fonksiyonu ise adi ve soyadi sütunlarını birleştirirken bir de araya ilk girdi değeri olarak verdiğimiz boşluğu sokar. Çıktımız: “Muhittin Özer” olur.

Farklı tablolardan sütunları birleştirmek:

SELECT a.id,CONCAT_WS(' ',a.adi,a.soyadi,b.mezuniyet) FROM uyeler AS a INNER JOIN bilgiler AS b ON a.id=b.uye_id

Burada da uyeler tablosundan adi ve soyadi sütunlarını, bilgiler tablosundan da mezuniyet sütununu aldık ve aralarda boşluk bırakarak birleştirmiş olduk. Çıktımız ise: “Muhittin Özer 2005” oldu.



4 Responsesto “Kendime Not #2: MySQL sütunları birleştirme (CONCAT)”

  1. Ahmet diyor ki:

    Güzel paylaşım yalnız bir sorum olacak, verdiginiz örnek isim soy isim sütunları birleşti ve yan yana çıktılarını aldık, bunu şu şekilde nasıl yaparız peki,
    örnek veriyorum tablomda 2 adet tarih sütunu var ben bunları birleştirip listelemeyi bu birleştirme sonucunda tarihe göre yapmak istiyorum, bunda bi fikriniz varsa yardımcı olursanız sevinirim tşk.

  2. Muhittin Özer diyor ki:

    Tam olarak ne yapmak istediğinizi anlayamadım. Bu tarihleri string olarak mı birlştirmek istiyorsunuz? String olarak birleştirdiğiniz takdirde listeleme neye göre olacak? Konuyu biraz açarsanız yardımcı olmaya çalışayım.

  3. Ahmet diyor ki:

    Peki hocam ekrana bastırırken bu şekilde gayet güzel çalışıyor fakat benim yapmak istediğim iki sütunu birleştirmek ve birleşen 2 sütunda LIKE fonksiyonuyla arama yapmak yani ad ve soyad sütunları birleşip dışardan gelecek olan ad soyadı karşılaştırıcam sonuç var ise ekrana bartırıcam. Bir kaç deneme yaptım ama sonuç alamadım.

  4. Ahmet diyor ki:

    Sorun halloldu teşekkürler:
    Select m.adi,m.soyadi,m.tip,a.adid,s.soyadid,CONCAT_WS(‘ ‘,a.ad,s.soyad) As AdSoyad From musteri m INNER JOIN adlar a ON a.adid=m.adi INNER JOIN soyadlar s ON s.soyadid=m.soyadi Where CONCAT_WS(‘ ‘,a.ad,s.soyad) LIKE ‘%”&Str&”%’”

    gibi bir sorgu işimi gördü..

Leave a Reply