Fonksiyonlar Hafta 4
Karakter Kümesi Fonksiyonları İki Karakter Kümesini Birleştirme MS sql+ karakteri ile Oracle || ile My Sql Concat fonk. İle Concat Kullanımı: Select concat(adi,’ ’, soyadi) as "adsoyad" from personel «»
Verinin İstenilen Bölümünü Almak SUBSTRING() Bir karakter kümesi içinden istenilen bölümün alınması için MS Sql veritabanı sistemlerinde SUBSTRING() fonksiyonu kullanılır. Değer kümesi, başlangıç pozisyonu ve alınacak karakter sayısı olmak üzere üç parametre alır. SUBSTRING(değer kümesi, başlangıç, karakter sayısı)
Örneğin; deger=«Yazılım« ise SUBSTRING(deger,2,3) sonucu "azı« olacaktır. Oracle; SUBSTR(veri kümesi,başlangıç,katakter sayısı) Karakter sayısı verilmezse geriye kalan bilginin tamamı alınır. MySql de ikisi de kullanılabilir.
Örnek:select substring(bol_adi,1,3) as "kisa ad" from bolum
Veriden İstenilen Kısmı Almak LEFT() ve RIGHT() LEFT() belirtilen karakter kümesinin başlangıcından itibaren belirli bir sayıda karakter almak için kullanılır. MS Sql ve My sql için geçerlidir. RIGHT() ise sonundan itibaren alır. LEFT/RIGHT(‘bilginin alınacağı yer’, alınacak karakter sayısı)
Örnek: select LEFT(h_adi,1) +'.'+ h_soyadi as "Ad Soyad" from hocalar
Büyük Küçük Harf Dönüşümü LOWER() VE UPPER() Lower() fonksiyonu parametre olarak verilen değeri küçük harfe, Upper() ise büyük harfe çevirir. Bütün veritabanı sistemlerinde kullanımı aynıdır. Örnek: select UPPER(ders_adi) as "ders adı" from dersler
Örnek: select UPPER(bol_adi) AS "BOLUM ADI" from bolum
Boşlukları Kaldırmak TRIM() ,RTRIM() VE LTRIM() TRIM()önündeki ve sonundaki boşlukları kaldırır. RTRIM()sağındaki yani sonundaki boşlukları kaldırır. LTRIM()solundaki yani önündeki boşlukları kaldırır. MS Sql de sadece TRIM fonksiyonu tanımlı değildir. Diğer vtys lerde 3 fonk. da tanımlıdır.MS sql de RTRIM(LTRIM()) kullanarak TRIM elde edilebilir.
select LTRIM(RTRIM(ders_adi)) from dersler
Karakter Sayısını Bulmak LEN() VE LENGTH() Ms sql LEN() Oracle ve MysqlLENGTH() Her iki fonk da karakter kümesini parametre olarak alır. Select , where, oreder by veya herhangi bir eşitlik ifadesiyle kullanılabilir. Örnek: Select
Örnek: select ders_adi ,LEN(ders_adi) as "ders adı uzunlugu" from dersler
İlk Harfi Büyük Yapmak INITCAP() Sadece oracle da var. Select INITCAP(‘yazılım’) from dersler Yazılım sonucunu verecektir.
İstenilen Bilgiyi Değiştirmek Replace() Replace(sutun_adi,değişecekbilg,yeni_bilgi) Bütün vtys de tanımlıdır. Örnek: select adi, REPLACE(sinif,2,3)as "yeni sinif" from ogrenci
Karakter Arama CHARINDEX() VE INSTR() CHARINDEX MS Sql Charindex(‘Aranacak Bilgi’,’ Arama yeri’,’varsa başlangıç noktası’) INSTR Oracle ve My sql Instr(‘arama yeri’,’aranacak bilgi’)
Karakter Arama CHARINDEX() VE INSTR() Aranan bilgi bulunursa, bulunan index numarası geriye döner. Bulunmazsa geriye 0 döner. Aranan bilgi birden fazla yerde bulunuyorsa ilk bulunan yerin indexi geri döner. Örnek:select CHARINDEX('Feyza',adi) from ogrenci
Tersten Yazdırma Reverse() Bütün vtys lerde tanımlıdır. select reverse(adi) from ogrenci
Mutlak Değer ABS() Bütün vtys lerde tanımlıdr. select abs(-1) as mutlak 1 sonucunu döndürecektir. Örnek: vize ile final notları arasındaki farkı bulan sorgu select ABS(vize-final) from notlar
Aşağı Yukarı Yuvarlama FLOOR() VE CEIL() Yukarı yuvarlamak için; MS Sql Ceiling() OracleCeil() My sql Ceiling() ve Ceil() Aşağı yuvarlamak için; Floor()3 ünde de tanımlıdır. select CEILING(vize*0.4) from notlar
En Yakın Tamsayıya Yuvarlama ROUND() ROUND(değer,basamak_sayısı) Basamak sayısı yuvarlanacak değerin virgülden sonraki yuvarlanacak basamak sayısını belirtir. Bu bölüme negatif değer verilirse virgülden önceki kısımda yuvarlama yapar.
Bir sayının kuvvetini alma POW(x,y)=x^y Karekök Alma SQRT()
Toplamı Bulma SUM() Çoğunlukla gruplama yapılan sql ifadelerinde kullanılır, Tüm vtys lerde tanımlıdır Gruplama yapılmadan kullanıldığında sorgu sonucu listelenecek sütun sadece SUM() fonksiyonu kullanılan sütun olmalıdır İkinci bir sütun yazıldığında sorgu çalışmaz Ama ikinci sütunda SUM fonksiyonu tekrar kullanılabilir, Çünkü sorgu sonucu dönen satır yine tek satırdır
select sum(vize) from notlar çalışır select sum(vize),op_kod from notlarhata verir select sum(vize),op_kod from notlar group by op_kod çalışır Not:Parametre olarak verilen veri tipi sayısal olmalıdır
Ortalama Değeri Hesaplama AVG() Tüm vtys lerde tanımlıdır Birden fazla sütun görüntülenmek istenirse yine gruplama yapmak gereklidir, Not:Parametre olarak verilen veri tipi sayısal olmalıdır Select avg(vize) from notlar
En büyük en küçük değer bulma MAX() ve MIN() Karakter ,sayısal ve tarih veri türleri için kullanılabilir Select max(vize) as "en büyük vize " from notlar Select min(vize) as "en küçük vize " from notlar
Satır Sayısını Bulma Count() Belirtilen sütundaki satır sayısını bulmak için kullanılır Kaç kayıt var onu verir * karakteri de parametre olarak verilebilir Örnek: select COUNT(*) from notlar where vize<90
Bölümden Kalanı Bulma MOD() Oracle MOD() My SQL MOD() veya % MS sql %
Uygulamalar Notlar tablosunda kaç farklı öğrencinin bilgisinin girildiğini bulan sorguyu yazınız Maksimum final notu ile maksimum vize notu arasındaki farkı bulan sorguyu yazınız Vizeden aldığı notu tek sayı olan öğrencilerin numaralarını ve vizelerini listeleyiniz Optik kodu 421 olan dersin kaç öğrenci için not bilgisi girildiğini bulan sorguyu yazınız Optik kodu 274 olan dersi alan öğrencilerin final notlarının ortalaması nedir bulan sorguyu yazınız Memleket adinin ilk 3 harfini memleket kısa kod olarak adlandırılan sütunda gösteren sorguyu yazınız Memleket adi 8 den uzun olan memleketlerin tel kodlarını ve memleket adlarını büyük olacak şekilde listeleyiniz Vize ve final notlarının bağıl sisteme göre ortalamasını virgülden sonra ki 2 rakama göre yuvarlayarak listeleyiniz Final ortalamalarını optik kodlara göre gruplandırarak listeleyiniz Vizesi finalinden yüksek olan kaç farklı öğrenci olduğunu bulan sorguyu yazınız