SQL Server Metinsel ve Aritmetik Fonksiyonlar
SQL Server Metinsel ve Aritmetik Fonksiyonlar
Bu yazımızda SQL’de metinsel ve aritmetik fonksiyonları kullanarak metin ya da nümerik tabanlı verilerimiz üzerinde nasıl uzun uzadıya sorgu yazmaktan kurtulup tek satırda hızlı ve kolay sonuçlar elde edebileceğimize yakından bakacağız.
Metinsel Fonksiyonlar
SQL Server Metinsel Fonksiyonlar, metin tabanlı verilerimiz üzerinde bir takım hazır fonksiyonlar ile çeşitli işlemler yapmamızı sağlar. Örneğin bir sütun değerini büyük ya da küçük harfe dönüştürebilir, sol veya sağ tarafından istediğimiz değerleri silebilir, değerleri tersinden yazdırabilme gibi pek çok metinsel işlemlerimizi uzun uzadıya yazmak yerine bu metinsel fonksiyonlarımızı kullanarak kısa süre içerisinde halledebiliriz.
Şimdi, örneklerle birlikte metinsel fonksiyonlarımızı yakından tanıyalım;
1. ASCII
Girilen karakterin ASCII kod tablosundaki karşılığını verir. ASCII kod tablosu ise bir karakter kodlama sistemidir. Klavyede bastığım her tuşun ASCII kod tablosunda bir değeri vardır. Arka planda o döner. Daha fazla bilgi için ASCII Kod Tablosu inceleyebilirsiniz.
Örnek: Büyük B harfinin ASCII kod tablosunda hangi değere karşılık geldiğini bulalım.
-- ASCII SELECT ASCII('B') AS ASCI_KOD_KARSILIGI
Çıktımız aşağıdaki gibi olacaktır:
2. CHAR
ASCII fonksiyonunda girilen karakterin sayısal değerini alıyorduk. CHAR fonksiyonumuzda ise girilen ASCII kodunun hangi karaktere denk geldiğini öğreniyoruz.
Örnek: ASCII kod tablosunda 66 olan sayının hangi karaktere denk geldiğini bulalım.
--CHAR SELECT CHAR(66) AS ASCI_KARAKTER_KARSILIGI
Çıktımız aşağıdaki gibi olacaktır:
3. CHAR INDEX
İki parametre alır. İlk parametrenin 2.Parametrede kaçıncı indexten itibaren başladığını verir.
Örnek: Dünya kelimesinin 2.Parametrede başlangıç değerini bize döndüren sorgumuzu yazalım.
-- CHAR INDEX SELECT CHARINDEX('Dünya','Merhaba Dünya') AS KACINCI_INDEXTEN_BASLIYOR
Çıktımız aşağıdaki gibi olacaktır:
Örnek: Bu CHARINDEX fonksiyonumuz 2.Parametreyi alabildiği gibi 3.Parametreyi de alabilir. Sorgumuza “Siber Güvenlik Ekosistem” cümlesindeki siber kelimesini bir daha ekleyip parametremizi de 5 olarak verelim. Böylelikle 2.Parametremizde 5.Karakterden sonra siber kelimesini arayacak ve kaçıncı karakterde buluyorsa o değeri bize döndürecek.
--CHAR INDEX SELECT CHARINDEX('Siber','Siber Ekosistem Siber Güvenlik',5) AS IKINCI_SIBER_IFADESİ_KACINCI_INDEX
Çıktımız aşağıdaki gibi olacaktır:
4. CONCAT
Girilen parametrelerimizi birleştirmemize yarayan fonksiyondur.
Örnek: Sorgumuza girdiğimiz parametreleri CONCAT fonksiyonu ile birleştirelim.
--CONCAT SELECT CONCAT('Merhaba','Dünya' ) AS BIRLESTIRME
Çıktımız aşağıdaki gibi olacaktır:
5. LEFT
LEFT fonksiyonumuz 2 parametre alır. İlk parametremizde herhangi bir cümle gireriz. İkinci parametremizde ise bu girilen ilk cümleden kaç karakter alacağımızı belirleriz.
Örnek: Sorgumuza herhangi bir cümle girelim ve LEFT fonksiyonu ile ilk 2 karakterini alalım.
--LEFT SELECT LEFT('Selam Mert',2) AS KAC_KARAKTER_ALALIM
Çıktımız aşağıdaki gibi olacaktır:
6. LEN
Girilen parametrenin kaç karakter olduğu bilgisini veren fonksiyonumuzdur.
Örnek: Sorgumuza herhangi bir cümle yazalım ve kaç karakterden oluştuğunu LEN fonksiyonumuzla öğrenelim
--LEN SELECT LEN('Türkiyenin En Etkili Yazılım Akademisi Codementors') AS KAC_KARAKTER
Çıktımız aşağıdaki gibi olacaktır:
7. LOWER
Parametremize girilen değeri küçük harfe dönüştüren fonksiyonumuzdur.
Örnek: Sorgumuza ‘CODEMENTORS’ kelimesini verelim ve LOWER fonksiyonumuzla tamamen küçük harfe çevirelim.
--LOWER SELECT LOWER('CODEMENTORS') AS KUCULT
Çıktımız aşağıdaki gibi olacaktır:
8. LTRIM
Parametremize girilen değerin sol tarafındaki boşluğu kaldırır.
Örnek: Sorgumuza ‘ Merhaba Codementors Ailesi’ yazalım ve LTRIM fonksiyonumuzla boşluğu nasıl sildiğini görelim.
--LTRIM SELECT LTRIM(' Merhaba Codementors Ailesi') AS SOL_BOSLUK_SİL
Çıktımız aşağıdaki gibi olacaktır:
9. REPLACE
REPLACE fonksiyonu 3 parametre alır. 1. Parametre cümledir. 2. Parametreye girdiğimiz değeri 3. Parametre ile değiştirmemizi sağlar.
Örnek: Sorgumuzda girdiğimiz ‘Merhaba Codementors Aılesı’ cümlesindeki ‘ı’ harfini ‘i’ harfi ile değiştirelim.
--REPLACE SELECT REPLACE('Merhaba Codementors Aılesı','ı','i') AS HARF_DEGISTIRELIM
Çıktımız aşağıdaki gibi olacaktır:
10. REPLICATE
1.Parametrede girilen değeri 2. Parametre sayısı kadar yazar.
Örnek: Sorgumuzda girdiğimiz ‘Merhaba Codementors Aılesı’ cümlesini REPLICATE fonksiyonu ile 2 kere yazdıralım.
--REPLICATE SELECT REPLICATE('Merhaba Codementors Ailesi/',2) AS IKI_KERE_YAZDIRALIM
Çıktımız aşağıdaki gibi olacaktır:
11. REVERSE
Parametremize girilen değeri tersten yazmamızı sağlar.
Örnek: ‘SQL Öğreniyorum’ cümlesini REVERSE fonksiyonu ile tersten yazdıralım.
--REVERSE SELECT REVERSE('SQL Öğreniyorum') AS TERSTEN_YAZDIR
Çıktımız aşağıdaki gibi olacaktır:
12. RIGHT
Sorgumuzda yazdığımız herhangi bir cümlenin sağ taraftan ilk 5 karakterini ya da 10 karakterini isteğimize göre alabiliriz.
Örnek: ‘Merhaba Codementors Ailesi’ cümlemizden ‘Ailesi’ kelimesini RIGHT fonksiyonumuz ile alalım.
--RIGHT SELECT RIGHT('Merhaba Codementors Ailesi',6) AS SAG_6_KARAKTER
Çıktımız aşağıdaki gibi olacaktır:
13. UPPER
Parametremize girdiğimiz tüm karakterleri büyük yapar LOWER fonksiyonumuzun tam tersi özelliğindedir.
Örnek: Sorgumuzda ‘sql öğreniyorum’ ifadesini UPPER fonksiyonumuz ile büyütelim.
--UPPER SELECT UPPER('sql öğreniyorum') AS BUYULTELIM
Çıktımız aşağıdaki gibi olacaktır:
14. RTRIM
Parametremize girdiğimiz değerin sağ tarafındaki boşluğu kaldırır.
Örnek: Sorgumuza ‘Merhaba Codementors Ailesi ’ cümlemizdeki sağ taraftaki bulunan boşluğu kaldırmak için RTRIM fonksiyonumuzu kullanalım.
--RTRIM SELECT RTRIM('Merhaba Codementors Ailesi ') AS SAG_BOSLUK_SIL
Çıktımız aşağıdaki gibi olacaktır:
15. SUBSTRING
SUBSTRING fonksiyonumuz 3 parametre alır. 1.Parametremize herhangi bir cümle giriyoruz. 2.Parametremize kesilmesini istediğimiz index değerinin kaçıncı değerden başlayacağı 3.Parametremize kaç tane karakterin kesilmesini istiyorsak onu yazıyoruz.
Örnek: Sorgumuza girdiğimiz cümlemizi 11.Karakterden itibaren 5 karakter kesen sorgumuzu yazalım.
--SUBSTRING SELECT SUBSTRING('Türkiyenin En Etkili Yazılım Akademisi',11,5) AS KESME_ISLEMI
Çıktımız aşağıdaki gibi olacaktır:
Aritmetik Fonksiyonlar
1. ABS
Absolute kelimesinin kısaltmasından oluşur. Mutlak değer işlemlerimizi bu fonksiyon ile yaparız.
Örnek: -10 sayısının mutlak değerini ABS fonksiyonumuz aracılığıyla alalım.
--ABS SELECT ABS(-10) AS MUTLAK_DEGER
Çıktımız aşağıdaki gibi olacaktır:
2. CEILING
Girilen ondalıklı sayıyı bir üst tam sayıya yuvarlar.
Örnek: ‘9.99’ ondalıklı sayısını üstte yuvarlayan CEILING fonksiyonumuz.
-- CEILING SELECT CEILING(9.99) AS UST_YUVARLA
Çıktımız aşağıdaki gibi olacaktır:
3. POWER
Üs alma işlemlerimizi bu fonksiyonumuz ile yaparız.
Örnek: 2 sayısının 4. Üssünü alan sorgumuzu POWER fonksiyonumuz aracılığıyla yapalım.
--POWER SELECT POWER(2,4) AS ÜSSÜ
Çıktımız aşağıdaki gibi olacaktır:
4. FLOOR
Türkçe karşılığı zemin anlamına gelir. Girdiğimiz değeri ondalıklı sayıyı alta yuvarlayan fonksiyonumuzdur.
Örnek: Sorgumuza girdiğimiz ‘13.2’ ondalıklı sayısını FLOOR fonksiyonumuz ile alt tam sayıya yuvarlayalım.
--FLOOR SELECT FLOOR(13.2) AS ALT_YUVARLA
Çıktımız aşağıdaki gibi olacaktır:
5. RAND
0 ile 1 arasında rastgele değer üreten fonksiyonumuzdur.
Örnek: Rastgele değer üreten sorgumuzu yazalım.
--RAND SELECT RAND() AS RASTGELE_SAYI_URET
Sorgumuz rastgele bir değer döndüreceğinden bu bölümde çıktı vermeyeceğim.
6. ROUND
Girdiğimiz ondalıklı değerin virgülden sonra kaçıncı basamağından itibaren yuvarlanacağını bildirir.
Örnek: ‘19.45268’ sayısının virgülden sonra ikinci basamağından itibaren yuvarlayan sorgumuzu yazalım.
--ROUND SELECT ROUND(19.45268,2) AS IKINCI_BASAMAKTAN_ITIBAREN_YUVARLA
Çıktımız aşağıdaki gibi olacaktır:
7. SQRT
Girdiğimiz sayının karekökünü hesaplayan fonksiyonumuzdur.
Örnek: 36 sayısının karekökünü hesaplayan sorgumuzu yazalım.
--SQRT SELECT SQRT(36) AS KAREKOK
Çıktımız aşağıdaki gibi olacaktır:
8. SQUARE
Girdiğimiz sayının karesini hesaplayan fonksiyonumuzdur.
Örnek: 5 sayısının karesini hesaplayan sorgumuzu yazalım.
--SQURE SELECT SQUARE(5) AS KARE_HESAPLA
Çıktımız aşağıdaki gibi olacaktır:
Bu yazımızda, metinsel ve aritmetik fonksiyonların neler olduğunu, kullanım örneklerini, sorgularımızda bize nasıl hız ve performans kazandırdığını öğrendik.