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

Dönüşümler ve koşullu fonksiyonlar: CAST, CONVERT, TRY_CAST, IIF, CHOOSE

Tip dönüşümü, hatasız dönüşüm, ISNULL ile COALESCE farkı.

Uygulamada aç, 4 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ç.

CAST, CONVERT ve TRY_ ailesi

SELECT CAST('123' AS INT) + 1             AS sayi,
       TRY_CAST('abc' AS INT)               AS gecersiz_sayi,
       TRY_CONVERT(DATE, '2024-02-30')      AS gecersiz_tarih,
       CONVERT(DATE, '2024-02-28')          AS tarih,
       CAST(19.99 AS DECIMAL(10, 1))        AS yuvarlanmis;

CAST başarısız olursa sorgu hata verir; TRY_CAST / TRY_CONVERT ise NULL döner. Kirli veriyi temizlerken hayat kurtarır.

SELECT CAST('abc' AS INT) AS sonuc;

IIF ve CHOOSE

SELECT TOP 8 name, stock,
       IIF(stock = 0, N'Tükendi', IIF(stock < 20, N'Az', N'Var')) AS durum
FROM products
ORDER BY stock;
SELECT CHOOSE(DATEPART(quarter, order_date), 'Q1', 'Q2', 'Q3', 'Q4') AS ceyrek,
       COUNT(*) AS siparis
FROM orders
WHERE YEAR(order_date) = 2024
GROUP BY DATEPART(quarter, order_date)
ORDER BY DATEPART(quarter, order_date);

ISNULL ile COALESCE farkı

ISNULL(a, b)COALESCE(a, b, c, ...)
Argüman sayısı2Sınırsız
Sonuç tipiİlk argümanın tipi (uzun değer kırpılabilir)En yüksek öncelikli tip
StandartSQL Server'a özgüANSI standardı

Örneğin ISNULL(CAST(NULL AS VARCHAR(3)), 'Bilinmiyor') sonucu 'Bil' olur; COALESCE ise 'Bilinmiyor' döner.

Örtük dönüşüm ve tip önceliğiSQL Server farklı tipleri karşılaştırırken düşük öncelikli tipi yüksek olana çevirir (ör. VARCHAR → INT). WHERE musteri_no = 123 sorgusunda musteri_no VARCHAR ise her satır sayıya çevrilir: hem indeks kullanılamaz hem de sayıya çevrilemeyen bir değer sorguyu patlatır.
Alıştırmalara geç (4)