Merhaba arkadaşlar bu yazımda Veritabanında oldukça sık kullanılan bazı özel fonksiyonlardan bahsedeceğim.
Fonksiyon olarak belki de hepsini yazamayabilirim. Ben sadece bunlar içinde en çok kullanılan fonksiyonları anlatacağım. Daha önce bende hazır yüklü bir veritabanı ile devam edeceğim.
Karakter Kümesi Fonksiyonları
char, varchar ve text gibi veri tipine sahip alanlarda kullanılan fonksiyonlardır. Gelin bunları inceleyelim.
İki Karakter Kümesini Birleştirmek
Bazen bir veriye bir şeyler eklemek, iki sütunu tek bir yerde görmek isteyebilirsiniz. Bunun için birleştirme işlemi yapılmaktadır.
Fonksiyon Adı = CONCAT / +
Kullanımı = CONCAT(birinci alan, ikinci alan, ….. )
Örnek Kullanım
Öğrenci isim ve soyisimlerini tek bir sütunda görmek istersem bunu çok kolay bir şekilde kullabilirim.
SELECT CONCAT(adi,’ ‘,soyadi) as AdıSoyadı from ogrenci
Gördüğünüz gibi isim ve soyisim alanlarını tek bir sütun üzerinde gösterdik. ‘+’ operatörü ile kullanımı ise şu şekildedir.
SELECT adi+ ‘ ‘ +soyadi as ADISOYADI from ogrenci
Veri İçinden Bir Bölümü Almak
Bazen bir metin veya kelime içinden bir kısmı çekip almanız gerekebilir.
Fonksiyon Adı = SUBSTRING
Kullanımı = SUBSTRING(veri kümesi, başlangıç, karakter sayısı)
Örnek Kullanım
Öğrenci isimlerinin 2.harfinden başlayarak 5 karakter alalım.
SELECT SUBSTRING(adi, 2, 5) as isim from ogrenci
Çıktımız:
Yukarıda görmüş olduğunuz gibi ilk harfler atılmış ve devamında ise 5 karakter alınarak tüm tablo üzerinde uygulama yaptım.
Veriden İstenilen Kısmı Almak
Bir metin içerisinden soldan başlayarak belli bir karakter almanız gerekebilir. Ya da sağdan başlayarak belli bir karakterin alınması istenebilir.
Fonksiyon Adı = LEFT / RIGHT
Kullanımı = LEFT(sütun_adi, alınacak karakter sayısı)
RIGHT (sütun_adi, alınacak karakter sayısı)
Örnek Kullanım
Öğrenci adının ilk harfi ile soyisminden oluşan kullanıcı adı oluşturma işlemi yapalım.
SELECT LEFT(adi,1)+’.’+soyadi AS kullaniciAdi FROM ogrenci
Bunun sağ hali de sadece LEFT yerine RIGHT yazmak olacaktır. Benzer kodu aşağıdaki gibidir.
Soyadının sağdan iki, adın da soldan üç harfini alıp kullanıcıAdı sütunu olarak göstermek için kodumuz:
SELECT RIGHT(soyadi,2)+’-‘+LEFT(adi,3) AS kullaniciAdi FROM ogrenci
Bunu da siz deneyerek yapabilirsiniz.
Büyük Küçük Harf Dönüşümü Yapmak
SQL büyük küçük harf duyarlı olduğundan bazen bir sorgulama yapmadan önce harfleri büyütmek/ küçültmek gerekebilir.
Fonksiyon Adı = LOWER / UPPER
Kullanımı = UPPER(sütun adı)
LOWER(sütun adı)
Örnek Kullanım
Öğrenci adının hepsini küçültüp, soyadlarının da tamamını büyültmek için aşağıdaki kod kullanılabilir. (Mantıklı bir kullanım değildir. Örnek olması açısından yapılmaktadır.)
SELECT LOWER(adi), UPPER(soyadi) FROM ogrenci
Örnek çıktısı yukarıdaki gibidir. Genelde sorgu yaparken isim soyisim gibi aramalarda tamamı büyük, kullanıcı adı gibi aramalarda hepsi küçük olması tercih edilmektedir.
Boşlukları Kaldırmak
Bazen sorgu yaparken boşlukları kaldırmak gerekebilir. Kullanıcı kayıt olurken fazla fazla boşluk da koymuş da olabilir. Bu boşlukları kaldırmak gerekebilir.
Fonksiyon Adı = TRIM / RTRIM / LTRIM
Kullanımı = TRIM(boşluk silinecek değer/sütun)
RTRIM(boşluk silinecek değer/ sütun)
LTRIM(boşluk silinecek değer/ sütun)
Örnek Kullanım
Sadece TRIM örneğini göstereceğim. Diğer ikisinin de kullanımı aynı. Önünde boşluk bulunan bir verinin önündeki boşlukları kaldıracağız. Sonundaki boşlukları gösteremediğim için örnek olarak almadım. Bölüm isimlerinin önündeki ve sonundaki boşlukları kaldırma işlemi.
SELECT TRIM(bol_adi) FROM bolum
Karakter Sayısını Bulmak
Karakter sayısını bilmek birçok konuda bize yardımcı olacaktır.
Fonksiyon Adı = LEN / LENGHT
Kullanımı MsSQL’de LEN, ORACLE ve MySQL’de LENGHT’dir.
LEN(karakter sayısını bulmak istediğiniz veri/sütun)
Örnek Kullanım
Öğrenci isim ve soyisim uzunluklarını yazdıralım.
SELECT LEN(adi) AS adUzunlugu, LEN(soyadi) AS soyadUzunlugu FROM ogrenci
Veri İçinde Değişiklik Yapmak
Bir kelimeyi başka bir kelime ile ya da bir dersin/ürün adını değiştirmek için kullanılır.
Fonksiyon Adı = REPLACE
REPLACE(sütun_adı, değişecek _değer, yerine_gelecek_değer)
Örnek Kullanım
Ders adı Bil.prg. olanı Bilgisayar Programlama diye değiştirelim.
SELECT ders_adi, REPLACE(ders_adi,’Bil.prg.’,’Bilgisayar Programlama’) FROM dersler
[the_ad id=”1292″]
Veri İçinde Karakter Arama
Bir metin içerisinde bir kelime aradığınızda o kelimenin başlangıç noktasını verir.
Fonksiyon Adı = CHARINDEX / INSTR
CHARINDEX MsSQL için, INSTR ise ORACLE ve MySQL için kullanılmaktadır.
Kullanımı = CHARINDEX(aranacak_metin, arama_yeri,başlangıç_noktası)
Başlangıç noktası boş bırakıldığında 0 varsayılan olarak alınır.
Örnek Kullanım
Ders adları içinde Bil sözcüğü geçen indisi versin.
SELECT CHARINDEX(‘Bil’,ders_adi,0) FROM dersler
Veriyi Tersten Yazdırma
Kullanımı var mı yok mu bilmiyorum ama örnek olarak sıksık karşıma çıktığı için yazıyorum. Ekran çıktısı eklemeyeceğim.
Fonksiyon Adı = REVERSE
Kullanımı = REVERSE(değişecek sütun ya da veri)
Örnek Kullanım
Öğrenci isimlerini ters çevirme.
SELECT REVERSE(adi) FROM ogrenci
Sayısal Değerler için Fonksiyonlar
Burada da sayısal veri tipleri için kullanılan fonksiyonlara bakacağız.
Mutlak Değer Alma
Mutlak değer sıklıkla karşımıza çıkmaktadır. Bazen negatif sayı olmaması gereken durumlar da kullanılır.
Fonksiyon Adı = ABS
Kullanım = ABS(sayı/sayısal sütun)
Örnek Kullanım
SELECT ABS(-25.65) AS SONUC
Çıktımız = 25.65
Aşağı ve Yukarı Yuvarlama
Yaklaşık tahminler yaparken kullanılabilir.
Fonksiyon Adı = FLOOR / CEILING
Kullanımı = FLOOR(sayı/sütun) – CEILING(sayı/sütun)
Örnek Kullanım
Virgüllü olarak girilen bütünleme notlarını CEILING ile yukarı yönde yuvarlayalım.
SELECT CEILING(but) FROM notlar
Daha öncesinden ogrenci notlar tablosu float biçime uygun olmadığı için benim kullandığım veri tabanında örneği malesef bulunmamaktadır. Fakat kullanımı yukarıdaki gibidir. Aşağıda da aşağı yuvarlama örneği verilmiştir.
SELECT FLOOR(final) FROM notlar
En Yakın Tamsayıya Yuvarlama
Burada da en yakına yuvarlıyor.
Fonksiyon Adı = ROUND
Kullanımı = ROUND(değer, basamak_sayısı)
Örnek Kullanım
Vize notlarını en yakın 10’luğa yuvarlama işlemi.
SELECT ROUND(vize,-1) FROM notlar
Bir Sayının Kuvvetini Alma
Matematiksel işlemler için veri tutuyor iseniz lazım olabilir.
Fonksiyon Adı = POWER
Kullanımı = POWER(kuvvet alınacak sayı, kuvvet)
Örnek Kullanım
SELECT POWER(5,2) AS SONUC
Sonucumuz 25 olarak çıkacaktır.
Karekök Alma
Kuvvetini aldık kökünü de alalım.
Fonksiyon Adı = SQRT
Kullanımı = SQRT(karekök alınacak sayı)
Örnek Kullanım
SELECT SQRT(121) AS SONUC
Sonucumuz 11 olarak çıkacaktır.
Toplamı Bulma
Bir market veritabanınız var ve toplam hasılatı bulmak isteyebilirsiniz. Bunun için kullanılabilir.
Fonksiyon Adı = SUM
Kullanımı = SUM(satis)
Örnek Kullanım
Vize, final, mazeret ve bütünleme ders notlarını toplayalım. Müşteri veritabanı olsa alacak verecek hesabı yapardık. Bizim de borçlarımız notlarımız 🙂
SELECT SUM(vize) AS Vize, SUM(mazeret) AS Mazeret, SUM(final) AS Final, SUM(but) AS But FROM notlar
Ortalama Değer Hesaplama
Sayısal verileriniz içerisinde ortalama değer bulmak isteyebilirsiniz.
Fonksiyon Adı = AVG
Kullanımı = AVG(sütunlar/veriler)
Örnek Kullanım
Vize, final ve bütünleme notlarının ortalamalarına bakalım.
SELECT AVG(vize) AS vizeOrtalama, AVG(final) AS finalOrtalama ,AVG(but) AS butOrtalama FROM notlar
En Büyük ve En Küçük Değeri Bulma
Sınıf içerisinde en büyük notu kim almış, taban puan uygulaması için en küçük notu kim almış gibi değerler önemlidir. Bu gibi durumlar için kullanılır.
Fonksiyon Adı = MAX / MIN
Kullanımı = MAX(sütun/veri) MIN(sütun/veri)
Örnek Kullanım
En büyük ve en küçük notu bulalım.
SELECT MAX(vize) AS maxVize, MIN(final) AS minFinal, MAX(but) AS maxBut FROM notlar
Satır Sayısı Bulma
Kaç kullanıcı olduğunu, belli bir şarta göre kaç kullanıcı olduğunu bulmak için kullanılabilir.
Fonksiyon Adı = COUNT
COUNT(sütun adı) – COUNT(*) * hepsini almak istediğimiz anlamına gelmektedir. SELECT’den sonra da * konulması tümünü seç anlamına gelmektedir.
Örnek Kullanım
Derse ve öğrenciye bakılmaksınız notlar tablosunda bütünleme notu 50’nin üzerinde olan öğrenci sayısını bulalım.
SELECT COUNT(*) AS SONUC FROM notlar WHERE but>50
Bölümden Kalanı Bulma
Kısaca mod alma işlemi.
Fonksiyon Adı = MOD / %
Kullanımı = birinci % ikinci – MOD(birinci, ikinci)
Örnek Kullanım
SELECT 159%12 AS Sonuc
SELECT MOD(123,12) AS Sonuc
Tarih ve Saat Fonksiyonları
Bu kısımda da tarih ve saat veri tipindeki veriler için fonksiyonlara bakacağız.
Güncel Tarih ve Saat Bilgisi Alma
Anlık tarih ve saati almak için kullanılır.
Fonksiyon Adı = CURRENT_TIMESTAMP / GETDATE()
Örnek Kullanım
SELECT CURRENT_TIMESTAMP
SELECT GETDATE()
Ben bu yazıyı hazırlar iken çıktısı = 2019-12-10 20:13:36.170
Tarih İçinde İstenilen Bir Bölümü Alma
Gün – Ay – Yıl gibi belirli bölümler bazen lazım olabiliyor. Örnek yaş hesaplama için Yıl alınırken aylık analiz için Ay alınmaktadır.
Fonksiyon Adı = DATENAME
Örnek Kullanım
SELECT DATENAME (MONTH, ‘19.08.1998’) — August
SELECT DATENAME (MONTH, GETDATE()) — December
SELECT DATENAME (MINUTE, GETDATE()) — 19
İki Tarih Arasındaki Farkı Bulma
İki tarih arasında, yaş hesaplamak için kullanılabilir.
Fonksiyon Adı = DATEDIFF
Örnek Kullanım
SELECT DATEDIFF(YEAR, ‘1998-08-19’, GETDATE()) — 21
Belirli Bir Tarih’e Tarih Ekleme
Çok kullanılır mı bilmiyorum ama belki analiz yaparken 10 gün sonra 1 ay sonra gibi sorgular yapılmaktadır. Bunlar için kullanılabilir.
Fonksiyon Adı = DATEADD
Kullanımı = DATEADD(eklenecek olan gün/ay/yıl , eklenecek miktar, ekleneceği tarih)
Örnek Kullanım
SELECT DATEADD(DAY, 30, ‘2019-12-10’) –> 2020-01-10
SELECT DATEADD(MONTH, 2, ‘2019-10-10’) –> 2019-12-10
Dönüşüm Fonksiyonları
Bazen tür dönüşümü yapmak gerekebilir.
CAST ve CONVERT bu ikisini anlatacağım.
CAST Kullanımı = CAST(veri AS veri_tipi)
Örnek Kullanım
SELECT CAST(‘Muhammed’ AS char(5)) –> Muham
CONVERT Kullanımı = Convert(veri_tipi, veri, stil(zorunlu değil))
SELECT CONVERT(varchar(20), GETDATE(), 1) –> 12/10/19
Umarım anlaşılır olmuştur. Hemen hemen tüm fonksiyonlara değinmeye çalıştım. Birçoğunun ekran görüntüsünü de ekledim. Örnekler size verdiğim kullanım formatlarına göre artırılabilir. Yeterince uzun bir yazı olduğu için örnekleri kısa tutmaya gayet gösterdim.