Son Haberler
Anasayfa / Yazılım / SQL / ABS, POWER, SQUARE,SQRT, ROUND ve RAND Fonksiyonları

ABS, POWER, SQUARE,SQRT, ROUND ve RAND Fonksiyonları

Bu yazımda sık kullanılan matematiksel fonksiyonlara değinmek istiyorum.

ABS fonksiyonu matematiksel bir fonksiyondur. Bu fonksiyon ile nümerik bir değerin mutlak değerini elde ederiz. Örneğin -5 değeri bu fonksiyon sonucunda bize 5 olarak geri döner. 5 değeri yine 5 olarak geri döner. Yani rakam değerinin negatif ya da pozitif durumu göz ardı edilerek bize mutlak değer sonucu döndürülür. Aşağıda örnekledim.

SELECT ABS(3) AS Sonuc
SELECT ABS(-3) AS Sonuc

290103

POWER fonksiyonu matematiksel olarak üs alma yani güç alma işlemi yapar. Yani bildiğimiz üslü sayılar. Bu fonksiyonun kullanımında iki parametre vardır. İlk parametre taban değer, ikinci parametre ise üs değeridir. Şimdi örnekleyelim.

SELECT POWER(3,1)
SELECT POWER(3,2)
SELECT POWER(3,3)

Bu sorgularımda ilk olarak 3 rakamının 1. kuvvetini, daha sonra 3 rakamının 2. kuvvetini ve sonra da 3 rakamının 3. kuvvetini alıyorum.

290104

SQUARE fonksiyonu matematiksel olarak kare alma işlemini yapmaktadır. Tek parametre alır. Örnekleyelim :

SELECT SQUARE(3)
SELECT SQUARE(8)
SELECT SQUARE(12)

İlk sorgumda 3’ün karesi, ikincisinde 8’in karesi ve son olarak 12’nin karesini alıyorum.

290105

SQRT fonksiyonu matematiksel olarak karekök alma işlemini yapmaktadır. Bu fonksiyon tek parametreye ihtiyaç duyar. Belirtilen verinin karekökünü alır. Örnekleyelim :

SELECT SQRT(3)
SELECT SQRT(16)
SELECT SQRT(21)

Sırası ile 3, 16 ve 21 rakamlarının karekökünü aldım.

290106

ROUND fonksiyonu yuvarlama fonksiyonudur. Özellikle ondalık sayılarda sayıların sadece belli bir kısmının alınmasında kullanılan bir fonksiyondur. ROUND fonksiyonu iki parametreye ihtiyaç duyar. İlk parametre sayısal veri ikinci parametre ise uzunluktur. Eğer istenirse üçüncü bir parametre girilebilir ancak bu zorunlu değildir. Bu parametre ile truncate işlemi yapılır. Yani normalde ROUND fonksiyonu ile belli bir basamak değerinden sonraki rakamlar sıfır olurken, truncate ile bu basamakların ardında kalan rakamlar komple atılır. Örnekleme yapalım :

SELECT ROUND(2848.2424,2)
SELECT ROUND(2848.2424,-2)
SELECT ROUND(2848.2424,2,1)
SELECT ROUND(2848.2424,-2,1)

290107

RAND fonksiyonu 0 ile 1 arasında rasgele bir ondalık sayı değerini döndürmektedir. SQL’de rastgele sayı döndürme işlemi bu şekilde gerçekleşmektedir. Ondalık kısımdan kurtulmak için çarpan değeri kullanabiliriz. Kullanımını örnekliyorum.

SELECT CAST(RAND() * 100 AS INT) + 1 AS "1 ile 100 arası rasgele sayı"
SELECT CAST(RAND() * 1000 AS INT) + 900 AS "500 ile 1500 arası rasgele sayı"
SELECT CAST(RAND() * 5 AS INT) + 1 AS "1 ile 5 arası rasgele sayı";

İlkinde 1 ile 100 arası sayı buluyorum. Sonra 500 ile 1500 arası daha sonra da 1 ile 5 arası.

290108

Şimdi bir kaç örnekte veritabanı üzerinde yapalım. AdventureWorks veritabanını kullanıyorum.

Sales.SalesOrderHeader tablosunu kullanarak SalesOrderID ve SubTotal kolonlarını listeleyelim. Ancak SubTotal kolonu ondalık kısımdan sonra yani sağ tarafta sadece iki basamak değeri belli olsun.

SELECT SalesOrderID, ROUND(SubTotal,2) AS SubTotal
FROM Sales.SalesOrderHeader

290109

Sales.SalesOrderHeader tablosunu kullanarak SalesOrderID ve SubTotal kolonlarını listeleyelim. Ancak SubTotal kolonu ondalık kısımdan sonra sıfır olsun.

SELECT SalesOrderID, ROUND(SubTotal,0) AS SubTotal
FROM Sales.SalesOrderHeader

290110

Sales.SalesOrderHeader tablosunu kullanarak SalesOrderID kolonunun karesini ve karekökünü aldıralım.

SELECT SalesOrderID, SQUARE(SalesOrderID) AS Karesi,
SQRT(SalesOrderID) AS "Kare Kökü" FROM Sales.SalesOrderHeader

290111

1 ile 10 arasında rasgele sayı üreten bir sorgu yazalım.

SELECT CAST(RAND() * 10 AS INT) + 1

Bu yazımda en sık kullanılan matematiksel fonksiyonlara değindim. SQL içindeki matematiksel fonksiyonlar tabii ki bu kadar değil. TAN,COTAN vb daha bir çok fonksiyon yer almakta, ancak bu tip fonksiyonlar çok aktif olarak kullanılmamaktadır. Daha sonra ilerleyen yazılarda da bu fonksiyonlara yer vereceğim. Şimdilik bu kadar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir