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

  1. ASCII: Girilen karakterin veya metindeki ilk harfin 7 bitlik ASCII standartlarındaki sayısal karşılığını verir.
  2. UNICODE: Girilen string ifadenin ilk karakterinin Unicode (tamsayı) değerini döndürür.

SQL


SELECT ASCII('A') AS AsciiKodu, UNICODE('Ş') AS UnicodeKodu;
-- Sonuç: AsciiKodu: 65, UnicodeKodu: 350

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


SELECT NCHAR(350) AS KarakterKarsiligi;
-- Sonuç: Ş

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


SELECT CHARINDEX('server', 'SQL Server Veritabanı Yönetimi') AS Konum;
-- Sonuç: 5

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


-- İçinde rakam geçen ilk konumu bulalım
SELECT PATINDEX('%[0-9]%', 'KullanıcıID_789_Veri') AS IlkRakamKonumu;
-- Sonuç: 13

3. Harf Değiştirme ve Metin Birleştirme Fonksiyonları

LOWER & UPPER

  1. LOWER: Metindeki tüm harfleri küçük harfe çevirir.
  2. UPPER: Metindeki tüm harfleri büyük harfe çevirir.

SQL


SELECT LOWER('SQL SERVER') AS Kucuk, UPPER('sql server') AS Buyuk;

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


SELECT CONCAT('Merve', ' ', 'Küçükdoğru') AS AdSoyad;
-- Sonuç: Merve Küçükdoğru

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


SELECT CONCAT_WS('-', '2026', '06', '06') AS TarihFormati;
-- Sonuç: 2026-06-06

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:

  1. LEN: Metnin kaç karakterden oluştuğunu (karakter uzunluğunu) verir (Sondaki boşlukları saymaz).
  2. DATALENGTH: Metnin bellekte kapladığı byte boyutunu hesaplar (Sondaki boşlukları da sayar).
  3. char/varchar tiplerinde her karakter 1 byte yer tutarken, nchar/nvarchar (Unicode) tiplerinde her karakter 2 byte yer tutar.
FonksiyonVARCHAR('SQL')NVARCHAR('SQL')
LEN3 Karakter3 Karakter
DATALENGTH3 Byte6 Byte

SQL


SELECT LEN(N'Metin') AS KarakterSayisi, DATALENGTH(N'Metin') AS ByteBoyutu;
-- Sonuç: KarakterSayisi: 5, ByteBoyutu: 10

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


SELECT SUBSTRING('Geleceği Yazanlar', 10, 7) AS Parca;
-- Sonuç: Yazanlar

LEFT & RIGHT

  1. LEFT: Metnin solundan (başından) belirtilen sayı kadar karakteri alır.
  2. RIGHT: Metnin sağından (sonundan) belirtilen sayı kadar karakteri alır.

SQL


SELECT LEFT('Veritabanı', 4) AS Sol, RIGHT('Veritabanı', 4) AS Sag;
-- Sonuç: Sol: Veri, Sag: banı

LTRIM, RTRIM & TRIM

  1. LTRIM: Metnin solundaki (başındaki) gereksiz boşlukları temizler.
  2. RTRIM: Metnin sağındaki (sondaki) gereksiz boşlukları temizler.
  3. TRIM: Hem sağdaki hem soldaki boşlukları temizler. Ayrıca belirtilen özel karakterleri de kırpabilir.

SQL


SELECT TRIM(' SQL Geliştirme ') AS TemizMetin;
-- Belirli karakterleri kırpma örneği:
SELECT TRIM('#.' FROM '##..SQL Server..##') AS Kırpılmıs; -- Sonuç: SQL Server

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


SELECT value FROM STRING_SPLIT('SQL,C#,Python,Javascript', ',');
/* Sonuç bir tablo olarak döner:
value
----------
SQL
C#
Python
Javascript
*/

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


-- Tablonuzdaki unvan düzenlemelerinde hayat kurtarır
SELECT REPLACE('Merve Hanım', 'Hanım', 'Yıldız') AS YeniIsim;
-- Sonuç: Merve Yıldız

REVERSE

İçerisine girilen string dizesini tamamen tersine çevirir.

SQL


SELECT REVERSE('veritabanı') AS Ters;
-- Sonuç: ınabatirev

REPLICATE

Belirtilen metni, istediğiniz sayı kadar yan yana tekrar ettirir. Maskeleme işlemlerinde çok kullanışlıdır.

SQL


SELECT REPLICATE('*', 5) AS Yıldızlar;
-- Sonuç: *****

SPACE

Belirtilen sayı kadar boşluk karakteri ( ) üretir. Metin birleştirirken araya dinamik boşluk eklemek için idealdir.

SQL


SELECT CONCAT('Merve', SPACE(10), 'Küçükdoğru') AS BoslukluIsim;

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


-- Güncel tarihi Türkiye formatına göre yazdıralım
SELECT FORMAT(GETDATE(), 'dd/MM/yyyy', 'tr-TR') AS FormatliTarih;

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.

  1. 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).
  2. 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


-- Yazılışları farklı ama okunuşları benzer kelimeler
SELECT SOUNDEX('Smith') AS S1, SOUNDEX('Smyth') AS S2;
-- İkisi de 'S530' kodunu üretir.

SELECT DIFFERENCE('Smith', 'Smyth') AS BenzerlikDerecesi;
-- Sonuç: 4 (Mükemmel eşleşme)

Ö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.