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), REVERSE | REPLICATE('*', 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, LOWER | TRIM 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).