MenzeletDB, 200’den fazla yerleşik SQL fonksiyonu destekler. Ayrıca dil duyarlı sıralama için collate() özel fonksiyonu sunucuya kayıtlıdır.
Aggregate fonksiyonlar NULL değerleri atlar (COUNT(*) hariç).
Fonksiyon Açıklama Örnek
COUNT(*)Tüm satırları sayar (NULL dahil) SELECT COUNT(*) FROM urunler
COUNT(sütun)NULL olmayan satırları sayar SELECT COUNT(fiyat) FROM urunler
SUM(sütun)Sayısal toplam SELECT SUM(fiyat) FROM urunler
AVG(sütun)Ortalama SELECT AVG(fiyat) FROM urunler
MIN(sütun)Minimum değer SELECT MIN(fiyat) FROM urunler
MAX(sütun)Maksimum değer SELECT MAX(fiyat) FROM urunler
MEDIAN(sütun)Medyan değer SELECT MEDIAN(fiyat) FROM urunler
ARRAY_AGG(sütun)Değerleri diziye toplar SELECT ARRAY_AGG(urun_adi) FROM urunler
BIT_AND(sütun)Bitwise AND SELECT BIT_AND(bayraklar) FROM ayarlar
BIT_OR(sütun)Bitwise OR SELECT BIT_OR(bayraklar) FROM ayarlar
BOOL_AND(sütun)Tümü true mi? SELECT BOOL_AND(aktif) FROM urunler
BOOL_OR(sütun)Herhangi biri true mi? SELECT BOOL_OR(aktif) FROM urunler
STDDEV(sütun)Standart sapma SELECT STDDEV(fiyat) FROM urunler
VARIANCE(sütun)Varyans SELECT VARIANCE(fiyat) FROM urunler
SELECT musteri_id,
COUNT(*) AS siparis_sayisi,
SUM(tutar) AS toplam,
AVG(tutar) AS ortalama,
MIN(tutar) AS en_dusuk,
MAX(tutar) AS en_yuksek
FROM siparisler
GROUP BY musteri_id
HAVING SUM(tutar) > 10000
ORDER BY toplam DESC
Fonksiyon Açıklama Örnek
LOWER(s)Küçük harfe çevirir SELECT LOWER('MENZELeT') → 'menzelet'
UPPER(s)Büyük harfe çevirir SELECT UPPER('menzelet') → 'MENZELET'
LENGTH(s)Karakter sayısı SELECT LENGTH('merhaba') → 7
CHAR_LENGTH(s)LENGTH ile aynıSELECT CHAR_LENGTH('abc') → 3
BIT_LENGTH(s)Bit cinsinden uzunluk SELECT BIT_LENGTH('abc') → 24
OCTET_LENGTH(s)Byte cinsinden uzunluk SELECT OCTET_LENGTH('abc') → 3
SUBSTR(s, pos, len)Alt metin çıkarır (1-tabanlı) SELECT SUBSTR('menzelet', 1, 3) → 'men'
LEFT(s, n)Soldan n karakter SELECT LEFT('menzelet', 3) → 'men'
RIGHT(s, n)Sağdan n karakter SELECT RIGHT('menzelet', 3) → 'let'
CONCAT(a, b, ...)Birleştirir SELECT CONCAT('men', 'ze', 'let') → 'menzelet'
CONCAT_WS(sep, ...)Ayırıcı ile birleştirir SELECT CONCAT_WS('-', 'a', 'b', 'c') → 'a-b-c'
REPLACE(s, old, new)Metin değiştirir SELECT REPLACE('abc', 'b', 'x') → 'axc'
REVERSE(s)Ters çevirir SELECT REVERSE('abc') → 'cba'
REPEAT(s, n)Tekrarlar SELECT REPEAT('ab', 3) → 'ababab'
TRIM(s)Baş/son boşluk siler SELECT TRIM(' abc ') → 'abc'
LTRIM(s)Soldan boşluk siler SELECT LTRIM(' abc') → 'abc'
RTRIM(s)Sağdan boşluk siler SELECT RTRIM('abc ') → 'abc'
LPAD(s, len, fill)Soldan doldurur SELECT LPAD('42', 5, '0') → '00042'
RPAD(s, len, fill)Sağdan doldurur SELECT RPAD('42', 5, '0') → '42000'
INITCAP(s)Her kelimenin baş harfi büyük SELECT INITCAP('hello world') → 'Hello World'
ASCII(s)İlk karakterin ASCII kodu SELECT ASCII('A') → 65
CHR(n)ASCII koddan karakter SELECT CHR(65) → 'A'
STARTS_WITH(s, prefix)Ön ek kontrolü SELECT STARTS_WITH('abc', 'ab') → true
ENDS_WITH(s, suffix)Son ek kontrolü SELECT ENDS_WITH('abc', 'bc') → true
CONTAINS(s, sub)İçerik kontrolü SELECT CONTAINS('abc', 'bc') → true
STRPOS(s, sub)Alt metin pozisyonu SELECT STRPOS('abcdef', 'cd') → 3
SPLIT_PART(s, d, n)Ayırıcıyla böl, n. parça SELECT SPLIT_PART('a-b-c', '-', 2) → 'b'
TRANSLATE(s, from, to)Karakter çevirisi SELECT TRANSLATE('abc', 'abc', 'xyz') → 'xyz'
TO_HEX(n)Sayıyı hex metin yapar SELECT TO_HEX(255) → 'ff'
LEVENSHTEIN(a, b)Düzenleme mesafesi SELECT LEVENSHTEIN('abc', 'axc') → 1
uuid()Rastgele UUID v4 üretir SELECT uuid() → 'c4a1...'
OVERLAY(s, r, pos, len)Metin üzerine yazar SELECT OVERLAY('abcdef' PLACING 'XX' FROM 3 FOR 2)
Fonksiyon Açıklama Örnek
ABS(x)Mutlak değer SELECT ABS(-5) → 5
CEIL(x)Yukarı yuvarlama SELECT CEIL(3.2) → 4
FLOOR(x)Aşağı yuvarlama SELECT FLOOR(3.8) → 3
ROUND(x, d)Yuvarla SELECT ROUND(3.456, 2) → 3.46
TRUNC(x, d)Kes SELECT TRUNC(3.456, 2) → 3.45
SQRT(x)Karekök SELECT SQRT(16) → 4
CBRT(x)Küpkök SELECT CBRT(27) → 3
POW(x, y)Üs alma SELECT POW(2, 10) → 1024
EXP(x)e^x SELECT EXP(1) → 2.718...
LN(x)Doğal logaritma SELECT LN(2.718) → ~1.0
LOG(base, x)Logaritma SELECT LOG(10, 100) → 2
LOG10(x)10 tabanında log SELECT LOG10(1000) → 3
LOG2(x)2 tabanında log SELECT LOG2(8) → 3
PI()Pi sabiti SELECT PI() → 3.14159...
RANDOM()0-1 arası rastgele SELECT RANDOM()
SIGN(x)İşaret (-1, 0, 1) SELECT SIGN(-5) → -1
FACTORIAL(n)Faktöriyel SELECT FACTORIAL(5) → 120
GCD(a, b)En büyük ortak bölen SELECT GCD(12, 8) → 4
LCM(a, b)En küçük ortak kat SELECT LCM(4, 6) → 12
DEGREES(rad)Radyandan dereceye SELECT DEGREES(PI()) → 180
RADIANS(deg)Dereceden radyana SELECT RADIANS(180) → 3.14...
SIN(x)Sinüs SELECT SIN(PI()/2) → 1
COS(x)Kosinüs SELECT COS(0) → 1
TAN(x)Tanjant SELECT TAN(PI()/4) → ~1
ASIN(x)Ark sinüs SELECT ASIN(1) → 1.5707...
ACOS(x)Ark kosinüs SELECT ACOS(1) → 0
ATAN(x)Ark tanjant SELECT ATAN(1) → 0.7853...
ATAN2(y, x)İki argümanlı ark tanjant SELECT ATAN2(1, 1) → 0.7853...
ISNAN(x)NaN kontrolü SELECT ISNAN(0.0/0.0)
ISZERO(x)Sıfır kontrolü SELECT ISZERO(0) → true
NANVL(x, alt)NaN ise alternatif SELECT NANVL(val, 0.0)
Fonksiyon Açıklama Örnek
COALESCE(a, b, ...)İlk NULL olmayan SELECT COALESCE(fiyat, 0.0)
NULLIF(a, b)Eşitse NULL SELECT NULLIF(fiyat, 0.0)
GREATEST(a, b, ...)En büyük değer SELECT GREATEST(3, 7, 1) → 7
LEAST(a, b, ...)En küçük değer SELECT LEAST(3, 7, 1) → 1
IFNULL(a, b)NULL ise b döner SELECT IFNULL(fiyat, 0.0)
NVL(a, b)IFNULL ile aynıSELECT NVL(fiyat, 0.0)
NVL2(a, b, c)a NULL değilse b, NULL ise c SELECT NVL2(fiyat, 'var', 'yok')
Fonksiyon Açıklama Örnek
NOW()Geçerli UTC zaman damgası SELECT NOW()
CURRENT_DATEBugünün tarihi SELECT CURRENT_DATE
CURRENT_TIMEŞu anki saat SELECT CURRENT_TIME
CURRENT_TIMESTAMPNOW() ile aynıSELECT CURRENT_TIMESTAMP
TODAY()CURRENT_DATE ile aynıSELECT TODAY()
date_part(birim, tarih)Tarih bileşeni çıkarır SELECT date_part('year', NOW())
EXTRACT(birim FROM tarih)SQL standart bileşen çıkarma SELECT EXTRACT(MONTH FROM tarih)
date_trunc(birim, tarih)Tarihi keser SELECT date_trunc('month', NOW())
date_bin(interval, ts, origin)Zaman aralığına hizalar SELECT date_bin(INTERVAL '1 hour', ts, '2024-01-01')
to_timestamp(s)Metinden timestamp SELECT to_timestamp('2024-01-15 10:30:00')
to_date(s, fmt)Metinden tarih SELECT to_date('15/01/2024', '%d/%m/%Y')
to_char(ts, fmt)Tarihten metin SELECT to_char(NOW(), '%Y-%m-%d')
from_unixtime(epoch)Unix epoch’tan timestamp SELECT from_unixtime(1705315800)
to_unixtime(ts)Timestamp’tan epoch SELECT to_unixtime(NOW())
make_date(y, m, d)Bileşenlerden tarih SELECT make_date(2024, 1, 15)
make_time(h, m, s)Bileşenlerden saat SELECT make_time(10, 30, 0)
Interval aritmetiği Tarihe süre ekleme SELECT NOW() + INTERVAL '10 days'
Kullanılabilir birimler: year, month, day, hour, minute, second, week, dow (haftanın günü), doy (yılın günü), quarter, epoch
SELECT date_part('year', siparis_tarihi) AS yil,
date_part('month', siparis_tarihi) AS ay,
COUNT(*) AS siparis_sayisi
FROM siparisler
GROUP BY yil, ay
ORDER BY yil, ay
Fonksiyon Açıklama Örnek
REGEXP_LIKE(s, pattern)Kalıp eşleşmesi SELECT REGEXP_LIKE('abc123', '[0-9]+') → true
REGEXP_MATCH(s, pattern)Eşleşen grubu döner SELECT REGEXP_MATCH('abc123', '([0-9]+)')
REGEXP_REPLACE(s, p, r)Kalıpla değiştirir SELECT REGEXP_REPLACE('abc123', '[0-9]', 'X')
REGEXP_COUNT(s, pattern)Eşleşme sayısı SELECT REGEXP_COUNT('abcabc', 'abc') → 2
Fonksiyon Açıklama Örnek
MD5(s)MD5 hash SELECT MD5('menzelet')
SHA224(s)SHA-224 hash SELECT SHA224('menzelet')
SHA256(s)SHA-256 hash SELECT SHA256('menzelet')
SHA384(s)SHA-384 hash SELECT SHA384('menzelet')
SHA512(s)SHA-512 hash SELECT SHA512('menzelet')
DIGEST(s, algo)Belirtilen algoritma SELECT DIGEST('abc', 'blake3')
Fonksiyon Açıklama Örnek
ENCODE(veri, format)Binary → metin SELECT ENCODE(blob_sutun, 'base64')
DECODE(metin, format)Metin → binary SELECT DECODE('AQID', 'base64')
Desteklenen formatlar: base64, hex
Window fonksiyonları OVER (...) ifadesiyle kullanılır.
Fonksiyon Açıklama
ROW_NUMBER()Satır numarası (1’den başlar)
RANK()Sıralama (eşitlerde aynı numara, sonraki atlar)
DENSE_RANK()Sıralama (eşitlerde aynı numara, sonraki atlamaz)
NTILE(n)n gruba eşit böler
LAG(sütun, n)n satır önceki değer
LEAD(sütun, n)n satır sonraki değer
FIRST_VALUE(sütun)Penceredeki ilk değer
LAST_VALUE(sütun)Penceredeki son değer
NTH_VALUE(sütun, n)Penceredeki n. değer
CUME_DIST()Kümülatif dağılım
PERCENT_RANK()Yüzdelik sıralama
-- Satır numarası
SELECT ROW_NUMBER() OVER (ORDER BY fiyat DESC) AS sira,
urun_adi, fiyat
FROM urunler
-- Bölüm bazlı sıralama
SELECT kategori, urun_adi, fiyat,
RANK() OVER (PARTITION BY kategori ORDER BY fiyat DESC) AS sira
FROM urunler
-- Bir önceki değerle karşılaştırma
SELECT tarih, tutar,
LAG(tutar, 1) OVER (ORDER BY tarih) AS onceki_tutar,
tutar - LAG(tutar, 1) OVER (ORDER BY tarih) AS fark
FROM gunluk_satis
-- Kümülatif toplam
SELECT tarih, tutar,
SUM(tutar) OVER (ORDER BY tarih) AS kumulatif_toplam
FROM gunluk_satis
-- LAST_VALUE (pencere çerçevesi gerekir)
SELECT urun_adi,
LAST_VALUE(urun_adi) OVER (
ORDER BY fiyat
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS en_pahali
FROM urunler
MenzeletDB’ye özgü, locale-duyarlı sıralama fonksiyonu:
-- Türkçe alfabetik sıralama
SELECT isim FROM musteriler ORDER BY collate(isim)
Detaylı kullanım için bkz: Veri İşlemleri — Dil Duyarlı Sıralama
Fonksiyon Açıklama Örnek
VERSION()Sunucu sürümü SELECT VERSION()