SQLCODEX

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

Öncelikli
Metin

LENGTH(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).

SQL

SUBSTR

Öncelikli
Metin

SUBSTR(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).

SQL

UPPER

Öncelikli
Metin

UPPER(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.

SQL

LOWER

Metin

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.

SQL

TRIM

Metin

TRIM(metin, [karakterler])

Metnin başındaki ve sonundaki boşlukları (ya da ikinci argümanla belirttiğin karakterleri) temizler.

SQL

LTRIM

Metin

LTRIM(metin)

Metnin sadece SOLUNDAKİ boşlukları temizler.

SQL

RTRIM

Metin

RTRIM(metin)

Metnin sadece SAĞINDAKİ boşlukları temizler.

SQL

REPLACE

Öncelikli
Metin

REPLACE(metin, eski, yeni)

Metindeki 'eski' değerinin TÜM geçtiği yerleri 'yeni' ile değiştirir.

SQL

INSTR

Metin

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.

SQL

|| (metin birleştirme)

Öncelikli
Metin

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

SQL

CONCAT

Metin

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.

SQL

LEFT

Metin

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.

SQL

RIGHT

Metin

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.

SQL

PRINTF

Metin

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.

SQL

ROUND

Öncelikli
Sayısal

ROUND(sayi, basamak)

Bir sayıyı belirtilen ondalık basamağa yuvarlar. basamak verilmezse tam sayıya yuvarlar.

SQL

ABS

Sayısal

ABS(sayi)

Bir sayının mutlak değerini (işaretsiz halini) döndürür.

SQL

CEIL

Sayısal

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

SQL

FLOOR

Sayısal

FLOOR(sayi)

Sayıyı bir önceki tam sayıya aşağı yuvarlar.

SQL

% (MOD)

Öncelikli
Sayısal

sayi1 % 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.

SQL

POWER

Sayısal

POWER(taban, us)

Bir sayının belirtilen kuvvetini (üssünü) hesaplar.

SQL

SQRT

Sayısal

SQRT(sayi)

Bir sayının karekökünü hesaplar.

SQL

RANDOM

Sayısal

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.

SQL

MAX / MIN (skaler)

Öncelikli
Sayısal

MAX(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.

SQL

DATE

Tarih

DATE(zaman_degeri, [modifier, ...])

Bir zaman değerinden sadece tarih kısmını (YYYY-MM-DD) çıkarır.

SQL

TIME

Tarih

TIME(zaman_degeri)

Bir zaman değerinden sadece saat kısmını (HH:MM:SS) çıkarır.

SQL

DATETIME

Tarih

DATETIME(zaman_degeri)

Tarih ve saati birlikte (YYYY-MM-DD HH:MM:SS) döndürür.

SQL

STRFTIME

Öncelikli
Tarih

STRFTIME(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.

SQL

CURRENT_DATE

Tarih

CURRENT_DATE

Bugünün tarihini (YYYY-MM-DD) döndürür — parantez almaz, doğrudan yazılır.

SQL

CURRENT_TIMESTAMP

Tarih

CURRENT_TIMESTAMP

Şu anki tarih ve saati (UTC) döndürür.

SQL

JULIANDAY

Öncelikli
Tarih

JULIANDAY(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.

SQL

Tarih Aritmetiği (+/-)

Öncelikli
Tarih

DATE(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.

SQL

start of (ay/yıl başı)

Tarih

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.

SQL

Haftanın Günü

Tarih

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.

SQL

COALESCE

Öncelikli
NULL/Koşul

COALESCE(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.

SQL

IFNULL

NULL/Koşul

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.

SQL

NULLIF

Öncelikli
NULL/Koşul

NULLIF(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.

SQL

CASE WHEN

NULL/Koşul

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.

SQL

CAST

Öncelikli
NULL/Koşul

CAST(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.

SQL

IIF

NULL/Koşul

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.

SQL

TYPEOF

NULL/Koşul

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.

SQL

COUNT

Öncelikli
Toplulaştırma

COUNT(*) / COUNT(kolon)

COUNT(*) tüm satırları, COUNT(kolon) sadece o kolonu NULL OLMAYAN satırları sayar.

SQL

SUM

Toplulaştırma

SUM(kolon)

Bir sayısal kolonun tüm değerlerinin toplamını hesaplar.

SQL

AVG

Öncelikli
Toplulaştırma

AVG(kolon)

Bir sayısal kolonun ortalamasını hesaplar.

SQL

MIN

Toplulaştırma

MIN(kolon)

Bir kolondaki en küçük değeri bulur (sayısal ya da metin/tarih için alfabetik en küçük).

SQL

MAX

Toplulaştırma

MAX(kolon)

Bir kolondaki en büyük değeri bulur.

SQL

GROUP_CONCAT

Öncelikli
Toplulaştırma

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

SQL

TOTAL

Toplulaştırma

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.

SQL