T-SQL’de String Fonksiyonlar
T-SQL bir Microsoft SQL Server’ın veritabanı programlama dilidir ve veritabanı dışında çıkmadan diğer programlama dillerinin hemen hemen yapabildiği her şeyi gerçekleştirme imkanı sunar.
Diğer programlama dilleriyle hemen hemen her şeyi gerçekleştirme imkanı sunuyor derken programlama dillerinin vazgeçilmez konusu olan fonksiyonları da destekliyor olması gerekmektedir. T-SQL kendi içerisinde hazır olarak bizlere birçok fonksiyon sunar.
Fonksiyon içerisine duruma göre bir ya da birden fazla parametre alan, bazen de hiç parametre almayan ve karşılığında yapılması gereken birçok işlemi kendi içerisinde gerçekleştiren yapılara denir. Programlama dillerinin temel ögelerinden biridir. Kurulum esnasında hazır gelmelerinin yanında kendimizde fonksiyon yazabiliriz.
T-SQL'deki hazır fonksiyonlar
– String Fonksiyonları: Metinsel ifadeler üzerinde işlem yapmak için kullanılır.
– Datetime Fonksiyonları: Tarih ve saat işlemleri için kullanılır.
– Matematik Fonksiyonları: Matematiksel işlem, hesaplama yapmada kullanılır.
– Tip Dönüşüm Fonksiyonları: Veri tipleri arasında dönüşümü yapar.
– Sistem Fonksiyonları: Sistem ile ilgili bilgiler getirir.
STRING FONKSİYONLAR
Veritabanlarında daha çok string ifadeler üzerinde işlemler gerçekleştiririz. T-SQL içerisinde hazır olarak bazı string fonksiyonları bulunur. Oldukça zengin bir string fonksiyon kütüphanesi bulunmaktadır.
• ASCII • CHAR • CHARINDEX • CONCAT • CONCAT_WS • DIFFERENCE • FORMAT • LEFT • LEFT • LEN • LOWER • LTRIM • NCHAR • PATINDEX • QUOTENAME • REPLACE • REPLICATE • REVERSE • RIGHT • RTRIM • SOUNDEX • SPACE • STR • STRING_AGG • STRING_ESCAPE • STRING_SPLIT • STUFF • SUBSTRING • TRANSLATE • TRIM • UNICODE • UPPER
ASCII Fonksiyonu
Bir karakterin ASCII değerini bize döndürür. Karakterlerin 0 – 255 arasındaki rakamsal değerini verir. Bu fonksiyonu verinin içinde kirli veri varsa yani istenmeyen, gözle görülmeyen karakterler varsa (enter,space gibi) bu karakterlerin ASCII değerini bulup temizlemek bunlara örnek olabilir.
• SELECT ASCII(‘B’) // 66
• SELECT ASCII(‘b’) // 98
• SELECT ASCII(‘A’) // 65
• SELECT ASCII(‘0’) // 48
• SELECT ASCII(‘1’) // 49
• SELECT ASCII(‘-‘) // 46
• SELECT ASCII(‘ ‘) // 32 (space = boşluk karakteri)
• SELECT ASCII(‘!’) // 33
• SELECT ASCII(‘+’) // 46
• SELECT ASCII(‘&’) // 36
• SELECT ASCII(‘#’) // 35
• SELECT ASCII(‘
‘) // 13 (enter = alt satır karakteri)

CHAR Fonksiyonu
ASCII ile tam tersi bir işlem gerçekleştirir. ASCII karakterin yani 0 – 255 arasındaki değerlerin hangi karakter olduğunu buluruz.
• SELECT CHAR (65) // A
• SELECT CHAR (13) //


CONCAT Fonksiyonu
Birden fazla string ifadeyi birleştirmek için kullanılır.
• SELECT CONCAT (‘EGE’,‘BÖLGESİ’) // EGEBÖLGESİ
• SELECT CONCAT (‘EGE’,‘ ‘,’BÖLGESİ’) // EGE BÖLGESİ
-> Bir diğer fonksiyonsuz yöntem:
• SELECT ‘EGE’ + ‘Bölgesi’ // EGEBölgesi

LEFT/RIGHT Fonksiyonları
Sağdan/soldan belli bir sayıda karakter almak için kullanılır.
• SELECT LEFT (‘A4 kağıt’,4) // A4 k
• SELECT RIGHT (‘A4 kağıt’,7) // 4 kağıt
TRIM-LTRIM-RTRIM Fonksiyonları
Trim kelime anlamıyla bir şeyleri kırpmak anlamına gelmektedir. Buradaki kırpmaktan ve temizlemekten kasıt boşluk karakterinden kurtulmaktır.
TRIM -> Baştan ve sondan kırpma yapar. Ortadan kırpma yapmaz.
LTRIM -> Soldan kırpma yapar.
RTRIM -> Sağdan kırpma yapar.
• SELECT TRIM (‘ A4 kağıt ‘) // A4 kağıt
• SELECT LTRIM (‘ A4 kağıt’) // A4 kağıt
• SELECT RTRIM (‘A4 kağıt ‘) // A4 kağıt
LOWER, UPPER, REVERSE, REPLICATE Fonksiyonları
-> LOWER: Küçük harfe çevirme.
-> UPPER: Büyük harfe çevirme.
-> REVERSE: Tersine çevirme. (Özellikle performans gerektiren yerlerde kullanılır.)
-> REPLICATE: Belirlediğimiz sayıda string ifadeyi tekrar ettiren fonksiyon.
• SELECT LOWER(‘EGE BÖLGESİ’) // ege bölgesi
• SELECT UPPER (‘ A4 kağıt’) // A4 KAĞIT
• SELECT REVERSE (‘Ege Bölgesi’) // iseglöB egE
• SELECT REPLICATE (‘Ege ‘,4) // Ege Ege Ege Ege
* LOWER ve UPPER’da eğer ingilizce bir kelime girdiğimizde uygun karakter değişimi yazmayıp aynı karakterin büyük ya da küçük halini yazacaktır. Bu durumla karşılaşmak istemiyorsanız kurulum aşamasında gerekli yapılandırmaları gerçekleştirebilirsiniz.

-> REPLICATE fonksiyonu akıllı kod vb. oluşturmada kullanılır. Otomatik artan bir kod örneği yapalım.
URUN0001, URUN0002,… şeklinde artarak gitmeli
SELECT ‘URUN’+’19’ // URUN19
SELECT ‘URUN’+‘000’+’19’ // URUN00019 -> Statik olarak 000 ekledik.
Fonksiyon ile bu sonuca ulaşmak için:
SELECT ‘URUN’+’REPLICATE(‘0′,3)’+’19’ // URUN00019
Sayı arttıkça 0’ların mantıksal bir şekilde azalması için:
SELECT ‘URUN’+ REPLICATE(‘0’,5 – LEN(‘156’)) + ‘156’ // URUN00156

REPLACE Fonksiyonu
Bir string ifade içerisinde aradığımız ifadeyi başka bir string ifade ile değiştirmede kullanılır. 3 adet parametresi vardır. Özellikle kirli veriyi temizlemede kullanılır.
REPLACE (‘Mevcut string ifade’,’Aradığımız ifade’,’Değişirmek istediğimiz yeni ifade’)
1 2 3
• SELECT REPLACE (‘T-SQL bir veritabanı programlama dilidir’, ‘T-SQL’, ‘Transact SQL’) // Transact SQL bir veritabanı programlama dilidir

SUBSTRING Fonksiyonu
Bir string ifadenin içerisinde belli bir başlangıç noktasından belli bir uzunluktaki ifadeyi almamız için gereken fonksiyondur. String parse işlemlerinde yoğun olarak kullanılır.
• SELECT SUBSTRING (‘Okul defteri kareli.’, 1,9) // Okul deft
• SELECT SUBSTRING (‘Okul defteri kareli.’, 4,12) // l defteri ka
CHARINDEX Fonksiyonu
Bir string ifade içerisinde aranan ifadenin nerede olduğu bilgisini pozisyon olarak bize getirir. Ayrıca bu pozisyon bilgisine göre parçalama işlemleri yaparız.
• SELECT CHARINDEX (‘2022′,’SQL SERVER 2022’) // 12 -> Satırda 12.sırada geldiğini ifade eder.
STRING_SPLIT Fonksiyonu
Sonuç olarak bize tablo olarak değer döner bu yüzden SELECT ile değil SELECT * FROM ile fonksiyonu çağırırız. String ifade içinde belirlediğimiz parametreye göre parçalama işlemi yapar.
• SELECT * FROM STRING_SPLIT (‘Bugün hava çok güzel.’,’ ‘) // Bugün
hava
çok
güzel.
• SELECT * FROM STRING_SPLIT (‘Denizli-Aydın-Muğla’,’-‘) // Denizli
Aydın
Muğla
