SQL Server 2012 – CONCAT FUNCTION

Merhaba Arkadaşlar,

Hayatımıza giren yeni fonksiyonlarımızı yukarıdaki listede görebilirsiniz. Biz bu yazımıza String Function dediğimiz Karakter Fonksiyonlarını anlatarak başlayacağız.

Bu makalemde SQL Server 2012 ile gelen Karakter Fonskiyonlarından CONCAT fomksiyonunu anlatacağım.

STRING (KARAKTER) FONKSİYONLARI 

A.CONCAT

Bu fonksiyon, karakterleri istediğimiz koşullara göre birleştirmemize yarar. SQL Server 2008 R2 de bunu  “+” işareti ile yaptığımız işi 2012 de daha geniş ve hızlı bir kapsama sahip olan CONCAT fonksiyonu ile gerçekleştiriyoruz.

Peki ama nasıl oluyor diye sorabilirsiniz. Şimdi örneklerle size anlatmaya çalışacağım. Aşağıdaki Scriptleri SQL Server 2008 R2 versiyonunda çalıştıralım ve sonuçlarını sizinle beraber inceleyelim…

--SQL SERVER 2008 R2 SQLTURKIYE.COM
SELECT  'SQL' + SPACE(1) + 'TÜRKİYE' AS 'SPACE Function';

1

Yukarıda  da gördüğünüz üzere araya bir space ‘lik boşluk bırakıp yazımızı birleştirdi. Diğer örneklerimize geçelim tekrar 2008 R2 üzerinden.

--SQL SERVER 2008 R2 SQLTURKIYE.COM
SELECT  1 + SPACE(1) + 'World' AS 'SPACE Function';

Yukarıdaki scriptimizi çalıştırdığımızda aşağıdaki gibi bir hata alıyoruz.Bunun nedeni; birleştirme operatörümüzün içerisine numerik sayısal bir değer koymamızdan dolayı bu yüzden converting hatası veriyor.Eğer biz 1 sayısal değerini ’1′ tırnak içerisinde yazsaydık hata vermeyecekti.

Msg 245, Level 16, State 1, Line 2
Conversion failed when converting the varchar value ‘World’ to data type int.

--SQL SERVER 2008 R2 SQLTURKIYE.COM
SELECT  '1' + SPACE(1) + 'World' AS 'SPACE Function';

Bakın ! aynen yukarıdaki satırda anlattığımız gibi oldu.1 sayısal değerini tırnak içinde atadık ve sonuç geldi.Şimdi sıra NULL değerlere geldi.Eğer Null bir değeri başka string ifadelerle kullandığınız zaman ne olur.Bunu aşağıdaki scriptle size anlatmaya çalışayım.

2

--SQL SERVER 2008 R2 SQLTURKIYE.COM
SELECT  'Yusuf' + NULL + 'Kahveci' AS 'NULL Değer';

Scriptimizin sonucu bize NULL olarak geri döndü.SQL Server Default da bu şekilde birleşme işlemlerinde eğer NULL değeri bir kere içinde geçerse sonuç hep NULL döner.

3

Peki bunu nasıl aşabiliriz ? Bunu aşmak için CONCAT_NULL_YIELDS_NULL değerini kapatmanız gerekir.Aşağıdaki scripti çalıştırarak bunu gerçekleştirebilirisniz.

SET CONCAT_NULL_YIELDS_NULL OFF

Aynı sorguyu tekrar çalıştırdığımızda sonucun NULL gelmediğini göreceksiniz. Şimdi ise aynı sorguları SQL SERVER 2012 de çalıştırıp sonuçlarını inceleyelim.

--SQL SERVER 2012 SQLTURKIYE.COM
SELECT  CONCAT(1, SPACE(1), 'Yusuf KAHVECİ') Sayısal_Karekter_Birlestirme;

 

SQL Server 2008 R2 versiyonunda numerik karakterleri bu şekilde birleştiremezken.Yeni sürümde gelen CONCAT fonksiyonu ile rahat bir şekilde numerik ifadeleri birleştirebiliyoruz.

4

--SQL SERVER 2012 SQLTURKIYE.COM
SELECT  CONCAT(1, 1) Sayısal_Deger_Birleştirme ,
        CONCAT('SQL', NULL, 'TÜRKİYE') NULL_Birlestirme ,
        CONCAT(1, '-', SPACE(1), 'www.sqlturkiye.com') Web_Adresi ,
        CONCAT(2, '-', SPACE(1), '[email protected]') Email;

5

 

Teşekkürler …

 

Leave a Reply

Your email address will not be published. Required fields are marked *