Veritabanlarında tuttuğumuz veriler sadece sayılardan ibaret değildir; isimler, adresler, e-posta şablonları, açıklamalar gibi metinsel (string) veriler de büyük bir yer kaplar. Ham metin verilerini temizlemek, parçalamak, birleştirmek veya belirli kalıplara göre biçimlendirmek veritabanı yönetiminin ve raporlamanın temel taşlarındandır.
SQL Server, string manipülasyonu için oldukça güçlü yerleşik fonksiyonlar sunar. Bu rehberde, günlük işlerinizde hayatınızı kurtaracak 25 temel string fonksiyonunu kategorize edilmiş pratik örneklerle ele alıyoruz.
1. Karakter Kodlama ve Dönüşüm Fonksiyonları
ASCII & UNICODE
ASCII: Girilen karakterin veya metindeki ilk harfin 7 bitlik ASCII standartlarındaki sayısal karşılığını verir.UNICODE: Girilen string ifadenin ilk karakterinin Unicode (tamsayı) değerini döndürür.
SQL
NCHAR
Belirtilen Unicode tamsayı koduna karşılık gelen karakteri döndürür. ASCII veya UNICODE fonksiyonlarının tersi gibi düşünülebilir.
SQL
2. Arama ve Konum Bulma Fonksiyonları
CHARINDEX
Bir metin içerisinde aradığınız başka bir alt metnin (substring) hangi karakterden (indisten) başladığını bulur. Büyük/küçük harf duyarlılığı yoktur ve SQL Server'da indislerin 1'den başladığını unutmamak gerekir.
Kullanımı: CHARINDEX(aranan, metin, [baslangic_indisi])SQL
PATINDEX
CHARINDEX fonksiyonuna benzer ancak en büyük avantajı Wildcard (Yüzde %, Alt çizgi _ vb.) yani arama kalıpları (pattern) kullanmanıza izin vermesidir.
SQL
3. Harf Değiştirme ve Metin Birleştirme Fonksiyonları
LOWER & UPPER
LOWER: Metindeki tüm harfleri küçük harfe çevirir.UPPER: Metindeki tüm harfleri büyük harfe çevirir.
SQL
CONCAT
Parametre olarak verilen string ifadeleri aralarına virgül koyarak kolayca birleştirmenizi sağlar. + operatörüne göre en büyük avantajı, içeride NULL bir değer olsa bile hata vermeden boşluk kabul edip birleştirmeye devam etmesidir.
SQL
CONCAT_WS (With Separator)
SQL Server 2017 ile hayatımıza giren bu fonksiyon, metinleri birleştirirken araya otomatik olarak belirlediğiniz bir ayırıcıyı (separator) koyar. İlk parametre ayırıcı karakterdir.
SQL
4. Uzunluk ve Bellek Boyutu Fonksiyonları
LEN & DATALENGTH
Bu iki fonksiyon sıkça birbirine karıştırılır ancak çalışma mantıkları tamamen farklıdır:
LEN: Metnin kaç karakterden oluştuğunu (karakter uzunluğunu) verir (Sondaki boşlukları saymaz).DATALENGTH: Metnin bellekte kapladığı byte boyutunu hesaplar (Sondaki boşlukları da sayar).char/varchartiplerinde her karakter 1 byte yer tutarken,nchar/nvarchar(Unicode) tiplerinde her karakter 2 byte yer tutar.
| Fonksiyon | VARCHAR('SQL') | NVARCHAR('SQL') |
LEN | 3 Karakter | 3 Karakter |
DATALENGTH | 3 Byte | 6 Byte |
SQL
5. Metin Parçalama ve Kırpma Fonksiyonları
SUBSTRING
Metnin içerisinden belirli bir bölümü cımbızla çekmek için kullanılır. 3 parametre alır: hedef metin, başlangıç indisi ve kaç karakter alınacağı.
SQL
LEFT & RIGHT
LEFT: Metnin solundan (başından) belirtilen sayı kadar karakteri alır.RIGHT: Metnin sağından (sonundan) belirtilen sayı kadar karakteri alır.
SQL
LTRIM, RTRIM & TRIM
LTRIM: Metnin solundaki (başındaki) gereksiz boşlukları temizler.RTRIM: Metnin sağındaki (sondaki) gereksiz boşlukları temizler.TRIM: Hem sağdaki hem soldaki boşlukları temizler. Ayrıca belirtilen özel karakterleri de kırpabilir.
SQL
STRING_SPLIT
Büyük bir metni, belirlediğiniz bir ayırıcı karaktere göre parçalayarak geriye bir tablo (satırlar halinde) döndürür. C# veya Python'daki split() fonksiyonunun SQL karşılığıdır.
SQL
6. Manipülasyon, Biçimlendirme ve Tekrar Fonksiyonları
REPLACE
Metin içerisindeki belirli bir ifadeyi veya karakteri, yeni bir ifadeyle değiştirmek için kullanılır.
SQL
REVERSE
İçerisine girilen string dizesini tamamen tersine çevirir.
SQL
REPLICATE
Belirtilen metni, istediğiniz sayı kadar yan yana tekrar ettirir. Maskeleme işlemlerinde çok kullanışlıdır.
SQL
SPACE
Belirtilen sayı kadar boşluk karakteri ( ) üretir. Metin birleştirirken araya dinamik boşluk eklemek için idealdir.
SQL
FORMAT
Tarih, saat veya para birimi gibi değerleri yerel kültür ayarlarına (culture) göre esnek biçimde formatlamanızı sağlar.
SQL
7. Fonetik (Ses Benzerliği) Fonksiyonları
SOUNDEX & DIFFERENCE
Verilerin yazılış biçiminden ziyade, okunuşlarına ve ses benzerliklerine göre arama yapmak istiyorsanız bu iki fonksiyonu kullanırsınız.
SOUNDEX: Kelimenin konuşulduğunda çıkardığı sese bağlı olarak 4 karakterli alfanümerik bir kod üretir (İlk harf büyük yazılır, kalan 3 karakter sayılardan oluşur).DIFFERENCE: İki farklı ifadenin SOUNDEX kodunu karşılaştırır ve 0 ile 4 arasında bir benzerlik puanı döner. 4, ses olarak birebir aynı veya çok yakın olduklarını gösterir.
SQL
Özet ve Değerlendirme
SQL Server'da string fonksiyonları, saklanan ham metin verilerinin raporlanabilir ve anlamlı veri setlerine dönüşmesinde kilit rol oynar. Özellikle SUBSTRING, CHARINDEX ve REPLACE üçlüsü veri temizleme süreçlerinin vazgeçilmezidir.
Ayrıca performans odaklı sorgularda karakter bazlı sayımlar yaparken LEN ve DATALENGTH farkını bilmek, doğru veri tiplerini seçmenize yardımcı olur. Projelerinizde veri manipülasyon işlemlerini veritabanı seviyesinde çözerek backend dillerinin üzerindeki yükü hafifletebilirsiniz.