Ana içeriğe geç
Kesit SQL
Temel · T-SQL (SQL Server)

T-SQL metin fonksiyonları

LEN, LEFT/RIGHT, SUBSTRING, CHARINDEX, STUFF, REPLICATE, CONCAT, STRING_AGG.

Uygulamada aç, 3 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

SQL Server'ın metin araç kutusu

FonksiyonÖrnek → Sonuç
LEN(s)LEN('Ankara ') → 6 (sondaki boşlukları saymaz)
DATALENGTH(s)Bayt sayısı (NVARCHAR'da karakter başına 2)
LEFT(s, n), RIGHT(s, n)LEFT('Anadolu', 3) → Ana
SUBSTRING(s, başlangıç, uzunluk)SUBSTRING('2024-05-17', 6, 2) → 05
CHARINDEX(aranan, s)CHARINDEX('@', 'ali@x.com') → 4
REPLACE, REPLICATE(s, n), REVERSEREPLICATE('*', 3) → ***
STUFF(s, baş, uzunluk, yeni)STUFF('ABCDE', 2, 3, '*') → A*E
CONCAT(a, b, ...), CONCAT_WS(ayraç, ...)NULL'ları boş metin sayar
TRIM, LTRIM, RTRIM, UPPER, LOWERTRIM 2017+
STRING_AGG(s, ayraç)Satırları tek metinde birleştirir (2017+)
SELECT first_name,
       LEN(first_name) AS uzunluk,
       LEFT(first_name, 1) + '.' + LEFT(last_name, 1) + '.' AS bas_harf,
       UPPER(last_name) AS soyad,
       CONCAT(first_name, ' ', last_name) AS tam_ad
FROM employees;

+ ile CONCAT farkı

SELECT first_name + ' ' + NULL AS arti_ile,
       CONCAT(first_name, ' ', NULL) AS concat_ile,
       CONCAT_WS(' - ', first_name, last_name, title) AS ws_ile
FROM employees
WHERE emp_id = 1;

+ bir NULL ile karşılaşınca sonucu NULL yapar; CONCAT NULL'ı boş metin sayar. Ayrıca + bir sayı ile bir metni birleştirmeye çalışırsa SQL Server metni sayıya çevirmeye çalışır ve hata verir: 'Adet: ' + 5 hata, CONCAT('Adet: ', 5) çalışır.

E-posta maskeleme: STUFF + REPLICATE + CHARINDEX

SELECT TOP 5 email,
       STUFF(email, 2, CHARINDEX('@', email) - 2,
             REPLICATE('*', CHARINDEX('@', email) - 2)) AS maskeli
FROM customers
WHERE email IS NOT NULL;

STRING_AGG ile listeleri birleştirmek

SELECT d.name AS departman,
       STRING_AGG(e.first_name, ', ') WITHIN GROUP (ORDER BY e.first_name) AS calisanlar
FROM departments d
JOIN employees e ON e.dept_id = d.dept_id
GROUP BY d.name;
Sıralama ve harmanlamaSQL Server'da metin karşılaştırma ve sıralama, sütunun collation ayarına bağlıdır. Türkçe veriler için Turkish_CI_AS kullanılırsa “i/İ” ve “ı/I” doğru eşleşir. Varsayılan SQL_Latin1_General_CP1_CI_AS büyük/küçük harf duyarsızdır (WHERE city = 'izmir', 'İzmir' ile eşleşmeyebilir).
Alıştırmalara geç (3)