Fonksiyonlar
47 SQL fonksiyonu — aranabilir, kategorilere ayrılmış, her biri çalıştırılabilir mini örnekli. Sınavda/mülakatta en çok çıkanlar Öncelikli rozetiyle işaretli.
47 fonksiyon
LENGTH
ÖncelikliLENGTH(metin)
Bir metnin karakter sayısını döndürür.
MySQL/SQL Server'da da LENGTH() aynı şekilde çalışır (SQL Server'da LEN() de kullanılabilir).
SUBSTR
ÖncelikliSUBSTR(metin, baslangic, uzunluk)
Bir metnin belirtilen konumundan başlayarak belirtilen uzunlukta bir parçasını döndürür. baslangic 1'den başlar; uzunluk verilmezse sona kadar devam eder. Negatif baslangic, sondan sayar.
MySQL'de SUBSTRING() de kullanılabilir; SQL Server'da sadece SUBSTRING() vardır (SUBSTR yok).
UPPER
ÖncelikliUPPER(metin)
Metni büyük harfe çevirir. DİKKAT: SQLite'ın UPPER/LOWER fonksiyonları sadece ASCII karakterleri tanır — Türkçe 'ı' harfi 'I'ya, 'i' harfi 'İ'ye dönüşmez (İngilizce kurallarla çalışır).
İkinci sonuçta 'ı' harfinin büyümediğini (İngilizce ASCII kuralı) fark et.
LOWER
LOWER(metin)
Metni küçük harfe çevirir. Aynı ASCII sınırlaması UPPER için de geçerlidir.
'İ' harfinin küçültülmüş hali beklediğin gibi 'i' olmayabilir — ASCII sınırlaması burada da geçerli.
TRIM
TRIM(metin, [karakterler])
Metnin başındaki ve sonundaki boşlukları (ya da ikinci argümanla belirttiğin karakterleri) temizler.
LTRIM
LTRIM(metin)
Metnin sadece SOLUNDAKİ boşlukları temizler.
RTRIM
RTRIM(metin)
Metnin sadece SAĞINDAKİ boşlukları temizler.
REPLACE
ÖncelikliREPLACE(metin, eski, yeni)
Metindeki 'eski' değerinin TÜM geçtiği yerleri 'yeni' ile değiştirir.
INSTR
INSTR(metin, aranan)
Aranan metnin, ana metin içinde İLK geçtiği konumu (1'den başlayarak) döndürür; bulunamazsa 0 döner.
|| (metin birleştirme)
Önceliklimetin1 || metin2
İki (ya da daha fazla) metni birleştirir (concatenation) — SQLite'ta metin birleştirmenin standart yoludur.
MySQL/SQL Server'da (varsayılan ayarlarla) || yerine CONCAT() fonksiyonu kullanılır — bir sonraki kayda bak.
CONCAT
CONCAT(metin1, metin2, ...) — SQLite'ta desteklenmez
Birden fazla metni birleştirir. DİKKAT: SQLite'ta CONCAT() fonksiyonu YOKTUR — bunun yerine || operatörü kullanılır.
MySQL ve SQL Server'da CONCAT('a', 'b') doğrudan çalışır.
SQLite'ta CONCAT('SQL', ' ', 'Atölyesi') yazmaya çalışırsan hata alırsın; || kullanman gerekir.
LEFT
LEFT(metin, n) — SQLite'ta desteklenmez
Bir metnin SOLUNDAN belirtilen sayıda karakteri alır. DİKKAT: SQLite'ta LEFT() fonksiyonu YOKTUR — aynı sonuç SUBSTR(metin, 1, n) ile elde edilir.
SQL Server ve MySQL'de LEFT('SQL Atölyesi', 3) doğrudan çalışır.
RIGHT
RIGHT(metin, n) — SQLite'ta desteklenmez
Bir metnin SAĞINDAN belirtilen sayıda karakteri alır. DİKKAT: SQLite'ta RIGHT() fonksiyonu YOKTUR — aynı sonuç SUBSTR(metin, -n) ile elde edilir (negatif baslangic sondan sayar).
SQL Server ve MySQL'de RIGHT('SQL Atölyesi', 8) doğrudan çalışır.
PRINTF
PRINTF(format, deger, ...)
C dilindeki printf'e benzer şekilde, sayıları/metinleri belirli bir formatta biçimlendirir (ör. sıfır dolgulu sayılar, ondalık basamak sayısı).
MySQL/SQL Server'da benzer işlev için FORMAT() kullanılır.
%05d, sayıyı 5 haneye tamamlayacak şekilde başına sıfır ekler.
ROUND
ÖncelikliROUND(sayi, basamak)
Bir sayıyı belirtilen ondalık basamağa yuvarlar. basamak verilmezse tam sayıya yuvarlar.
ABS
ABS(sayi)
Bir sayının mutlak değerini (işaretsiz halini) döndürür.
CEIL
CEIL(sayi)
Sayıyı bir sonraki tam sayıya yukarı yuvarlar.
MySQL/SQL Server'da CEILING() de kullanılabilir (SQLite'ta yalnızca CEIL çalışır, CEILING yoktur).
FLOOR
FLOOR(sayi)
Sayıyı bir önceki tam sayıya aşağı yuvarlar.
% (MOD)
Önceliklisayi1 % sayi2
Bölme işleminden kalanı (mod) verir. DİKKAT: SQLite'ta MOD() fonksiyonu YOKTUR — % operatörü kullanılır.
MySQL/SQL Server'da hem % hem de MOD(17, 5) çalışır.
POWER
POWER(taban, us)
Bir sayının belirtilen kuvvetini (üssünü) hesaplar.
SQRT
SQRT(sayi)
Bir sayının karekökünü hesaplar.
RANDOM
RANDOM()
Rastgele büyük bir tam sayı (pozitif ya da negatif) döndürür. Belirli bir aralıkta rastgele sayı üretmek için genelde ABS(RANDOM() % N) kalıbı kullanılır.
0-99 arasında rastgele bir sayı üretir — her çalıştırdığında farklı bir sonuç göreceksin.
MAX / MIN (skaler)
ÖncelikliMAX(deger1, deger2, ...) / MIN(deger1, deger2, ...)
DİKKAT: Bu, Toplulaştırma kategorisindeki GROUP BY ile kullanılan MAX/MIN'den FARKLIDIR — burada satırlar üzerinde değil, doğrudan verdiğin değerler arasından en büyüğü/en küçüğü seçilir.
Toplulaştırma MAX(kolon) tablodaki satırlar arasından seçer; bu skaler form verdiğin sabit değerler arasından seçer.
DATE
DATE(zaman_degeri, [modifier, ...])
Bir zaman değerinden sadece tarih kısmını (YYYY-MM-DD) çıkarır.
TIME
TIME(zaman_degeri)
Bir zaman değerinden sadece saat kısmını (HH:MM:SS) çıkarır.
DATETIME
DATETIME(zaman_degeri)
Tarih ve saati birlikte (YYYY-MM-DD HH:MM:SS) döndürür.
STRFTIME
ÖncelikliSTRFTIME(format, zaman_degeri)
Bir tarihi istediğin özel formatta metne çevirir — %Y (yıl), %m (ay), %d (gün), %H (saat) gibi kalıplarla.
MySQL'de benzer işlev DATE_FORMAT() ile, SQL Server'da FORMAT() ile yapılır.
CURRENT_DATE
CURRENT_DATE
Bugünün tarihini (YYYY-MM-DD) döndürür — parantez almaz, doğrudan yazılır.
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
Şu anki tarih ve saati (UTC) döndürür.
JULIANDAY
ÖncelikliJULIANDAY(zaman_degeri)
Bir tarihi 'Julian gün sayısı'na çevirir — iki tarih arasındaki gün farkını hesaplamanın standart yolu: iki JULIANDAY'i birbirinden çıkarırsın.
MySQL'de DATEDIFF(tarih1, tarih2), SQL Server'da DATEDIFF(day, tarih1, tarih2) kullanılır.
Tarih Aritmetiği (+/-)
ÖncelikliDATE(tarih, '+N gün/ay/yıl')
DATE/DATETIME fonksiyonlarına bir 'modifier' metni ekleyerek tarihe gün/ay/yıl ekleyip çıkarabilirsin.
MySQL'de DATE_ADD(tarih, INTERVAL 1 MONTH), SQL Server'da DATEADD(month, 1, tarih) kullanılır.
Aynı çağrıda birden fazla modifier art arda (soldan sağa) uygulanır.
start of (ay/yıl başı)
DATE(tarih, 'start of month')
'start of month' / 'start of year' gibi özel modifier'lar, bir tarihi içinde bulunduğu ayın ya da yılın ilk gününe yuvarlar.
Haftanın Günü
STRFTIME('%w', tarih)
Bir tarihin haftanın hangi gününe denk geldiğini 0 (Pazar) ile 6 (Cumartesi) arasında bir sayı olarak döndürür.
MySQL'de WEEKDAY() (0=Pazartesi), SQL Server'da DATEPART(weekday, ...) kullanılır — gün numaralandırması veritabanına göre değişir, dikkat et.
COALESCE
ÖncelikliCOALESCE(deger1, deger2, ...)
Verilen değerler arasından NULL OLMAYAN ilkini döndürür — genelde bir 'varsayılan değer' sağlamak için kullanılır.
IFNULL
IFNULL(deger, yedek_deger)
deger NULL ise yedek_deger'i, değilse deger'in kendisini döndürür — COALESCE'in iki argümanlı, SQLite'a özgü kısayolu.
MySQL'de de IFNULL() vardır; SQL Server'da karşılığı ISNULL()'dır.
NULLIF
ÖncelikliNULLIF(deger1, deger2)
deger1 ile deger2 EŞİTSE NULL, değilse deger1'i döndürür — genelde 0'a bölme hatasından korunmak için kullanılır.
CASE WHEN
CASE WHEN kosul THEN deger ... ELSE deger END
Koşullara göre farklı değerler üreten SQL'in 'if/else'i — Ünite 2.3'ten hatırlıyorsun, burada hızlı bir referans kartı olarak.
CAST
ÖncelikliCAST(deger AS tip)
Bir değeri başka bir veri tipine (INTEGER, REAL, TEXT gibi) dönüştürür — özellikle tam sayı bölmesi tuzağından kaçınmak için REAL'e çevirmede kritik.
IIF
IIF(kosul, dogruDeger, yanlisDeger)
CASE WHEN'in kısa, tek satırlık hali — SQLite'a özgüdür.
SQL Server'da da IIF() vardır; MySQL'de karşılığı IF() fonksiyonudur.
TYPEOF
TYPEOF(deger)
Bir değerin SQLite'taki gerçek veri tipini ('integer', 'real', 'text', 'null', 'blob') metin olarak döndürür — hata ayıklarken çok işe yarar.
COUNT
ÖncelikliCOUNT(*) / COUNT(kolon)
COUNT(*) tüm satırları, COUNT(kolon) sadece o kolonu NULL OLMAYAN satırları sayar.
SUM
SUM(kolon)
Bir sayısal kolonun tüm değerlerinin toplamını hesaplar.
AVG
ÖncelikliAVG(kolon)
Bir sayısal kolonun ortalamasını hesaplar.
MIN
MIN(kolon)
Bir kolondaki en küçük değeri bulur (sayısal ya da metin/tarih için alfabetik en küçük).
MAX
MAX(kolon)
Bir kolondaki en büyük değeri bulur.
GROUP_CONCAT
ÖncelikliGROUP_CONCAT(kolon, ayrac)
Bir grup içindeki satırların değerlerini tek bir metinde (varsayılan olarak virgülle, istersen başka bir ayraçla) birleştirir.
MySQL'de de GROUP_CONCAT() vardır (sözdizimi neredeyse aynı); SQL Server'da karşılığı STRING_AGG()'dir.
Her kategori için o kategorideki tüm ürün adlarını tek satırda görürsün.
TOTAL
TOTAL(kolon)
SUM()'a çok benzer, ama iki farkı var: hep REAL (ondalıklı) sonuç döndürür ve hiç satır yoksa (ya da hepsi NULL'sa) NULL yerine 0.0 döndürür — SUM boş bir grupta NULL verirdi.
TOTAL() SQLite'a özgüdür; MySQL/SQL Server'da bu davranış için genelde COALESCE(SUM(...), 0) yazılır.
Hiç eşleşen satır olmadığı için SUM olsaydı NULL dönerdi; TOTAL 0.0 döndürür.
LENGTH
ÖncelikliMetinLENGTH(metin)
Bir metnin karakter sayısını döndürür.
MySQL/SQL Server'da da LENGTH() aynı şekilde çalışır (SQL Server'da LEN() de kullanılabilir).
SELECT LENGTH('SQL Atölyesi');SUBSTR
ÖncelikliMetinSUBSTR(metin, baslangic, uzunluk)
Bir metnin belirtilen konumundan başlayarak belirtilen uzunlukta bir parçasını döndürür. baslangic 1'den başlar; uzunluk verilmezse sona kadar devam eder. Negatif baslangic, sondan sayar.
MySQL'de SUBSTRING() de kullanılabilir; SQL Server'da sadece SUBSTRING() vardır (SUBSTR yok).
SELECT SUBSTR('SQL Atölyesi', 1, 3), SUBSTR('SQL Atölyesi', 5);UPPER
ÖncelikliMetinUPPER(metin)
Metni büyük harfe çevirir. DİKKAT: SQLite'ın UPPER/LOWER fonksiyonları sadece ASCII karakterleri tanır — Türkçe 'ı' harfi 'I'ya, 'i' harfi 'İ'ye dönüşmez (İngilizce kurallarla çalışır).
İkinci sonuçta 'ı' harfinin büyümediğini (İngilizce ASCII kuralı) fark et.
SELECT UPPER('istanbul'), UPPER('ışık');LOWER
MetinLOWER(metin)
Metni küçük harfe çevirir. Aynı ASCII sınırlaması UPPER için de geçerlidir.
'İ' harfinin küçültülmüş hali beklediğin gibi 'i' olmayabilir — ASCII sınırlaması burada da geçerli.
SELECT LOWER('İSTANBUL');TRIM
MetinTRIM(metin, [karakterler])
Metnin başındaki ve sonundaki boşlukları (ya da ikinci argümanla belirttiğin karakterleri) temizler.
SELECT '[' || TRIM(' SQL Atölyesi ') || ']';LTRIM
MetinLTRIM(metin)
Metnin sadece SOLUNDAKİ boşlukları temizler.
SELECT '[' || LTRIM(' SQL Atölyesi ') || ']';RTRIM
MetinRTRIM(metin)
Metnin sadece SAĞINDAKİ boşlukları temizler.
SELECT '[' || RTRIM(' SQL Atölyesi ') || ']';REPLACE
ÖncelikliMetinREPLACE(metin, eski, yeni)
Metindeki 'eski' değerinin TÜM geçtiği yerleri 'yeni' ile değiştirir.
SELECT REPLACE('2025-01-15', '-', '/');INSTR
MetinINSTR(metin, aranan)
Aranan metnin, ana metin içinde İLK geçtiği konumu (1'den başlayarak) döndürür; bulunamazsa 0 döner.
SELECT INSTR('SQL Atölyesi', 'Atölyesi');|| (metin birleştirme)
ÖncelikliMetinmetin1 || metin2
İki (ya da daha fazla) metni birleştirir (concatenation) — SQLite'ta metin birleştirmenin standart yoludur.
MySQL/SQL Server'da (varsayılan ayarlarla) || yerine CONCAT() fonksiyonu kullanılır — bir sonraki kayda bak.
SELECT 'SQL' || ' ' || 'Atölyesi';
CONCAT
MetinCONCAT(metin1, metin2, ...) — SQLite'ta desteklenmez
Birden fazla metni birleştirir. DİKKAT: SQLite'ta CONCAT() fonksiyonu YOKTUR — bunun yerine || operatörü kullanılır.
MySQL ve SQL Server'da CONCAT('a', 'b') doğrudan çalışır.
SQLite'ta CONCAT('SQL', ' ', 'Atölyesi') yazmaya çalışırsan hata alırsın; || kullanman gerekir.
SELECT 'SQL' || ' ' || 'Atölyesi' AS concat_yerine;
LEFT
MetinLEFT(metin, n) — SQLite'ta desteklenmez
Bir metnin SOLUNDAN belirtilen sayıda karakteri alır. DİKKAT: SQLite'ta LEFT() fonksiyonu YOKTUR — aynı sonuç SUBSTR(metin, 1, n) ile elde edilir.
SQL Server ve MySQL'de LEFT('SQL Atölyesi', 3) doğrudan çalışır.
SELECT SUBSTR('SQL Atölyesi', 1, 3) AS left_yerine;RIGHT
MetinRIGHT(metin, n) — SQLite'ta desteklenmez
Bir metnin SAĞINDAN belirtilen sayıda karakteri alır. DİKKAT: SQLite'ta RIGHT() fonksiyonu YOKTUR — aynı sonuç SUBSTR(metin, -n) ile elde edilir (negatif baslangic sondan sayar).
SQL Server ve MySQL'de RIGHT('SQL Atölyesi', 8) doğrudan çalışır.
SELECT SUBSTR('SQL Atölyesi', -8) AS right_yerine;PRINTF
MetinPRINTF(format, deger, ...)
C dilindeki printf'e benzer şekilde, sayıları/metinleri belirli bir formatta biçimlendirir (ör. sıfır dolgulu sayılar, ondalık basamak sayısı).
MySQL/SQL Server'da benzer işlev için FORMAT() kullanılır.
%05d, sayıyı 5 haneye tamamlayacak şekilde başına sıfır ekler.
SELECT PRINTF('%05d', 42);ROUND
ÖncelikliSayısalROUND(sayi, basamak)
Bir sayıyı belirtilen ondalık basamağa yuvarlar. basamak verilmezse tam sayıya yuvarlar.
SELECT ROUND(3.14159, 2), ROUND(3.7);
ABS
SayısalABS(sayi)
Bir sayının mutlak değerini (işaretsiz halini) döndürür.
SELECT ABS(-42);
CEIL
SayısalCEIL(sayi)
Sayıyı bir sonraki tam sayıya yukarı yuvarlar.
MySQL/SQL Server'da CEILING() de kullanılabilir (SQLite'ta yalnızca CEIL çalışır, CEILING yoktur).
SELECT CEIL(4.2);
FLOOR
SayısalFLOOR(sayi)
Sayıyı bir önceki tam sayıya aşağı yuvarlar.
SELECT FLOOR(4.8);
% (MOD)
ÖncelikliSayısalsayi1 % sayi2
Bölme işleminden kalanı (mod) verir. DİKKAT: SQLite'ta MOD() fonksiyonu YOKTUR — % operatörü kullanılır.
MySQL/SQL Server'da hem % hem de MOD(17, 5) çalışır.
SELECT 17 % 5;
POWER
SayısalPOWER(taban, us)
Bir sayının belirtilen kuvvetini (üssünü) hesaplar.
SELECT POWER(2, 10);
SQRT
SayısalSQRT(sayi)
Bir sayının karekökünü hesaplar.
SELECT SQRT(144);
RANDOM
SayısalRANDOM()
Rastgele büyük bir tam sayı (pozitif ya da negatif) döndürür. Belirli bir aralıkta rastgele sayı üretmek için genelde ABS(RANDOM() % N) kalıbı kullanılır.
0-99 arasında rastgele bir sayı üretir — her çalıştırdığında farklı bir sonuç göreceksin.
SELECT ABS(RANDOM() % 100);
MAX / MIN (skaler)
ÖncelikliSayısalMAX(deger1, deger2, ...) / MIN(deger1, deger2, ...)
DİKKAT: Bu, Toplulaştırma kategorisindeki GROUP BY ile kullanılan MAX/MIN'den FARKLIDIR — burada satırlar üzerinde değil, doğrudan verdiğin değerler arasından en büyüğü/en küçüğü seçilir.
Toplulaştırma MAX(kolon) tablodaki satırlar arasından seçer; bu skaler form verdiğin sabit değerler arasından seçer.
SELECT MAX(5, 12, 3) AS en_buyuk, MIN(5, 12, 3) AS en_kucuk;
DATE
TarihDATE(zaman_degeri, [modifier, ...])
Bir zaman değerinden sadece tarih kısmını (YYYY-MM-DD) çıkarır.
SELECT DATE('2025-06-15 14:30:00');TIME
TarihTIME(zaman_degeri)
Bir zaman değerinden sadece saat kısmını (HH:MM:SS) çıkarır.
SELECT TIME('2025-06-15 14:30:00');DATETIME
TarihDATETIME(zaman_degeri)
Tarih ve saati birlikte (YYYY-MM-DD HH:MM:SS) döndürür.
SELECT DATETIME('2025-06-15');STRFTIME
ÖncelikliTarihSTRFTIME(format, zaman_degeri)
Bir tarihi istediğin özel formatta metne çevirir — %Y (yıl), %m (ay), %d (gün), %H (saat) gibi kalıplarla.
MySQL'de benzer işlev DATE_FORMAT() ile, SQL Server'da FORMAT() ile yapılır.
SELECT STRFTIME('%Y-%m', '2025-06-15');CURRENT_DATE
TarihCURRENT_DATE
Bugünün tarihini (YYYY-MM-DD) döndürür — parantez almaz, doğrudan yazılır.
SELECT CURRENT_DATE;
CURRENT_TIMESTAMP
TarihCURRENT_TIMESTAMP
Şu anki tarih ve saati (UTC) döndürür.
SELECT CURRENT_TIMESTAMP;
JULIANDAY
ÖncelikliTarihJULIANDAY(zaman_degeri)
Bir tarihi 'Julian gün sayısı'na çevirir — iki tarih arasındaki gün farkını hesaplamanın standart yolu: iki JULIANDAY'i birbirinden çıkarırsın.
MySQL'de DATEDIFF(tarih1, tarih2), SQL Server'da DATEDIFF(day, tarih1, tarih2) kullanılır.
SELECT JULIANDAY('2025-06-15') - JULIANDAY('2025-06-01') AS gun_farki;Tarih Aritmetiği (+/-)
ÖncelikliTarihDATE(tarih, '+N gün/ay/yıl')
DATE/DATETIME fonksiyonlarına bir 'modifier' metni ekleyerek tarihe gün/ay/yıl ekleyip çıkarabilirsin.
MySQL'de DATE_ADD(tarih, INTERVAL 1 MONTH), SQL Server'da DATEADD(month, 1, tarih) kullanılır.
Aynı çağrıda birden fazla modifier art arda (soldan sağa) uygulanır.
SELECT DATE('2025-01-15', '+1 month', '-3 day');start of (ay/yıl başı)
TarihDATE(tarih, 'start of month')
'start of month' / 'start of year' gibi özel modifier'lar, bir tarihi içinde bulunduğu ayın ya da yılın ilk gününe yuvarlar.
SELECT DATE('2025-06-15', 'start of month') AS ay_basi, DATE('2025-06-15', 'start of year') AS yil_basi;Haftanın Günü
TarihSTRFTIME('%w', tarih)
Bir tarihin haftanın hangi gününe denk geldiğini 0 (Pazar) ile 6 (Cumartesi) arasında bir sayı olarak döndürür.
MySQL'de WEEKDAY() (0=Pazartesi), SQL Server'da DATEPART(weekday, ...) kullanılır — gün numaralandırması veritabanına göre değişir, dikkat et.
SELECT STRFTIME('%w', '2025-06-15') AS haftanin_gunu;COALESCE
ÖncelikliNULL/KoşulCOALESCE(deger1, deger2, ...)
Verilen değerler arasından NULL OLMAYAN ilkini döndürür — genelde bir 'varsayılan değer' sağlamak için kullanılır.
SELECT COALESCE(NULL, NULL, 'varsayılan');
IFNULL
NULL/KoşulIFNULL(deger, yedek_deger)
deger NULL ise yedek_deger'i, değilse deger'in kendisini döndürür — COALESCE'in iki argümanlı, SQLite'a özgü kısayolu.
MySQL'de de IFNULL() vardır; SQL Server'da karşılığı ISNULL()'dır.
SELECT IFNULL(NULL, 'yedek');
NULLIF
ÖncelikliNULL/KoşulNULLIF(deger1, deger2)
deger1 ile deger2 EŞİTSE NULL, değilse deger1'i döndürür — genelde 0'a bölme hatasından korunmak için kullanılır.
SELECT NULLIF(5, 5), NULLIF(5, 3);
CASE WHEN
NULL/KoşulCASE WHEN kosul THEN deger ... ELSE deger END
Koşullara göre farklı değerler üreten SQL'in 'if/else'i — Ünite 2.3'ten hatırlıyorsun, burada hızlı bir referans kartı olarak.
SELECT CASE WHEN 10 > 5 THEN 'büyük' ELSE 'küçük' END;
CAST
ÖncelikliNULL/KoşulCAST(deger AS tip)
Bir değeri başka bir veri tipine (INTEGER, REAL, TEXT gibi) dönüştürür — özellikle tam sayı bölmesi tuzağından kaçınmak için REAL'e çevirmede kritik.
SELECT CAST('42' AS INTEGER) + 1;IIF
NULL/KoşulIIF(kosul, dogruDeger, yanlisDeger)
CASE WHEN'in kısa, tek satırlık hali — SQLite'a özgüdür.
SQL Server'da da IIF() vardır; MySQL'de karşılığı IF() fonksiyonudur.
SELECT IIF(10 > 5, 'büyük', 'küçük');
TYPEOF
NULL/KoşulTYPEOF(deger)
Bir değerin SQLite'taki gerçek veri tipini ('integer', 'real', 'text', 'null', 'blob') metin olarak döndürür — hata ayıklarken çok işe yarar.
SELECT TYPEOF(5), TYPEOF(5.5), TYPEOF('beş'), TYPEOF(NULL);COUNT
ÖncelikliToplulaştırmaCOUNT(*) / COUNT(kolon)
COUNT(*) tüm satırları, COUNT(kolon) sadece o kolonu NULL OLMAYAN satırları sayar.
SELECT COUNT(*) AS toplam, COUNT(phone) AS telefonu_olan FROM customers;
SUM
ToplulaştırmaSUM(kolon)
Bir sayısal kolonun tüm değerlerinin toplamını hesaplar.
SELECT SUM(price) AS toplam_deger FROM products;
AVG
ÖncelikliToplulaştırmaAVG(kolon)
Bir sayısal kolonun ortalamasını hesaplar.
SELECT AVG(price) AS ortalama_fiyat FROM products;
MIN
ToplulaştırmaMIN(kolon)
Bir kolondaki en küçük değeri bulur (sayısal ya da metin/tarih için alfabetik en küçük).
SELECT MIN(price) FROM products;
MAX
ToplulaştırmaMAX(kolon)
Bir kolondaki en büyük değeri bulur.
SELECT MAX(price) FROM products;
GROUP_CONCAT
ÖncelikliToplulaştırmaGROUP_CONCAT(kolon, ayrac)
Bir grup içindeki satırların değerlerini tek bir metinde (varsayılan olarak virgülle, istersen başka bir ayraçla) birleştirir.
MySQL'de de GROUP_CONCAT() vardır (sözdizimi neredeyse aynı); SQL Server'da karşılığı STRING_AGG()'dir.
Her kategori için o kategorideki tüm ürün adlarını tek satırda görürsün.
SELECT category, GROUP_CONCAT(product_name, ' | ') AS urunler FROM products GROUP BY category;
TOTAL
ToplulaştırmaTOTAL(kolon)
SUM()'a çok benzer, ama iki farkı var: hep REAL (ondalıklı) sonuç döndürür ve hiç satır yoksa (ya da hepsi NULL'sa) NULL yerine 0.0 döndürür — SUM boş bir grupta NULL verirdi.
TOTAL() SQLite'a özgüdür; MySQL/SQL Server'da bu davranış için genelde COALESCE(SUM(...), 0) yazılır.
Hiç eşleşen satır olmadığı için SUM olsaydı NULL dönerdi; TOTAL 0.0 döndürür.
SELECT TOTAL(price) FROM products WHERE category = 'Olmayan Kategori';