7 Mart 2013 Perşembe

MS SQL'de Fonksiyonlar

Merhaba Webkolog takipçileri!

SQL Server'da veri manipülasyonu yaparken, verileri işlemek, dönüştürmek ve anlamlı çıktılar üretmek için fonksiyonlar en büyük yardımcılarımızdır. Fonksiyonlar, belirli bir görevi yerine getiren önceden tanımlanmış kod bloklarıdır ve bize büyük kolaylık sağlarlar. Bugün sizlerle, MS SQL'de sıkça kullandığımız bazı önemli fonksiyonları, özellikle tarih, metin ve matematiksel fonksiyonları detaylıca inceleyeceğiz. Hazırsanız, verilerinizi daha verimli bir şekilde işlemeye başlayalım!

Fonksiyonlar Nedir?

MS SQL'de fonksiyonlar, bir veya daha fazla parametre alabilen ve tek bir değer döndüren hazır komutlardır. Veri üzerinde hesaplamalar yapmak, formatlarını değiştirmek veya belirli bilgileri çıkarmak için kullanılırlar. Fonksiyonlar sayesinde, kompleks işlemleri tek bir satırda veya kısa komutlarla halledebiliriz.

1. Tarih ve Zaman Fonksiyonları

Tarih ve zaman verileriyle çalışırken bu fonksiyonlar hayat kurtarıcıdır. Tarihleri karşılaştırmak, eklemeler yapmak veya belirli bir bölümünü almak için kullanılırlar.

-- Şimdiki tarih ve saati verir
SELECT GETDATE() AS SimdikiTarihSaat;

-- İki tarih arasındaki farkı verir (tip: DAY, MONTH, YEAR vb.)
SELECT DATEDIFF(YEAR, '2000-01-01', GETDATE()) AS YilFarki;
SELECT DATEDIFF(MONTH, '2024-01-15', '2025-06-30') AS AyFarki;

-- Bir tarihe belirli bir miktar ekler
SELECT DATEADD(DAY, 7, GETDATE()) AS BirHaftaSonra;
SELECT DATEADD(MONTH, 3, '2025-01-01') AS UcAySonra;

-- Tarihin belirli bir bölümünü sayısal olarak verir
SELECT DATEPART(YEAR, GETDATE()) AS SuankiYil;
SELECT DATEPART(MONTH, GETDATE()) AS SuankiAy;
SELECT DATEPART(DAY, GETDATE()) AS SuankiGun;

-- Tarihin belirli bir bölümünü metinsel olarak verir
SELECT DATENAME(MONTH, GETDATE()) AS AyAdi;
SELECT DATENAME(WEEKDAY, GETDATE()) AS HaftaninGunuAdi;

-- Verilen ifadenin geçerli bir tarih olup olmadığını kontrol eder (1:Evet, 0:Hayır)
SELECT ISDATE('2025-06-30') AS GecerliTarihMi;
SELECT ISDATE('Bu bir tarih değil') AS GecerliTarihMi2;

-- Tarihin gününü (sayısal) verir
SELECT DAY('2025-06-30') AS GunNumarasi;

-- Tarihin ayını (sayısal) verir
SELECT MONTH('2025-06-30') AS AyNumarasi;

-- Tarihin yılını (sayısal) verir
SELECT YEAR('2025-06-30') AS YilNumarasi;

2. Metin (String) Fonksiyonları

Metin verileri üzerinde çeşitli manipülasyonlar yapmak için kullanılırlar. Karakter sayma, birleştirme, değiştirme ve boşlukları temizleme gibi işlemler için çok kullanışlıdırlar.

DECLARE @metin NVARCHAR(100) = '   Webkolog Blog   ';

-- Bir alt dizenin başlangıç konumunu verir
SELECT CHARINDEX('Blog', @metin) AS BlogKonumu; -- Sonuç: 13 (boşlukları sayarak)

-- Soldan istenilen kadar karakteri alır
SELECT LEFT(@metin, 8) AS SoldanKarakterler; -- Sonuç: '   Webkol'

-- Sağdan istenilen kadar karakteri alır
SELECT RIGHT(@metin, 5) AS SagdanKarakterler; -- Sonuç: ' Blog'

-- Metnin solundaki boşlukları siler
SELECT LTRIM(@metin) AS SolBosluksuzMetin; -- Sonuç: 'Webkolog Blog   '

-- Metnin sağındaki boşlukları siler
SELECT RTRIM(@metin) AS SagBosluksuzMetin; -- Sonuç: '   Webkolog Blog'

-- Metni küçük harfe dönüştürür
SELECT LOWER(@metin) AS KucukHarfMetin; -- Sonuç: '   webkolog blog   '

-- Metni büyük harfe dönüştürür
SELECT UPPER(@metin) AS BuyukHarfMetin; -- Sonuç: '   WEBKOLOG BLOG   '

-- Metni tersten sıralar
SELECT REVERSE('Merhaba') AS TerstenMetin; -- Sonuç: 'abahreM'

-- Metni belirtilen sayı kadar çoğaltır
SELECT REPLICATE('SQL', 3) AS CogaltilmisMetin; -- Sonuç: 'SQLSQLSQL'

-- Metin içinde belirli bir kelimeyi başka bir kelimeyle değiştirir
SELECT REPLACE(@metin, 'Blog', 'Makaleleri') AS DegistirilmisMetin; -- Sonuç: '   Webkolog Makaleleri   '

-- Metin içinde belirli bir konumdan itibaren karakterleri değiştirir/ekler
-- STUFF(string, başlangıç konumu, kaç karakter silinecek, eklenecek string)
SELECT STUFF('ABCDEF', 2, 3, 'xyz') AS StuffMetin; -- Sonuç: 'AxyzEF' (B,C,D silinip 'xyz' eklendi)

-- Metnin karakter sayısını verir (boşluklar dahil)
SELECT LEN(@metin) AS KarakterSayisi; -- Sonuç: 19

-- Metnin belirli bir kısmını alır
-- SUBSTRING(string, başlangıç konumu, kaç karakter)
SELECT SUBSTRING(@metin, 4, 7) AS AlinanMetin; -- Sonuç: 'Webkolo'

3. Matematiksel Fonksiyonlar

Sayısal veriler üzerinde matematiksel işlemler yapmak için kullanılırlar.

-- Sayıların ortalamasını hesaplar (Aggregate fonksiyonu)
SELECT AVG(Maas) FROM Personel;

-- Sayının mutlak değerini verir
SELECT ABS(-15.7) AS MutlakDeger; -- Sonuç: 15.7

-- 0 ile 1 arasında rastgele bir sayı üretir
SELECT RAND() AS RastgeleSayi;

-- Bir sütundaki en büyük değeri bulur (Aggregate fonksiyonu)
SELECT MAX(Fiyat) FROM Urunler;

-- Bir sütundaki en küçük değeri bulur (Aggregate fonksiyonu)
SELECT MIN(StokAdedi) FROM Urunler;

-- Sayının doğal logaritmasını verir
SELECT LOG(10) AS DogalLogaritma;

-- Sayının 10 tabanına göre logaritmasını verir
SELECT LOG10(100) AS OnTabanliLogaritma;

-- Sayıyı yukarıya yuvarlar (en yakın büyük tam sayıya)
SELECT CEILING(12.1) AS YukariYuvarla; -- Sonuç: 13
SELECT CEILING(-12.9) AS YukariYuvarla2; -- Sonuç: -12

-- Sayıyı aşağıya yuvarlar (en yakın küçük tam sayıya)
SELECT FLOOR(12.9) AS AsagiYuvarla; -- Sonuç: 12
SELECT FLOOR(-12.1) AS AsagiYuvarla2; -- Sonuç: -13

-- Sayıyı belirtilen ondalık basamağa yuvarlar
SELECT ROUND(123.456, 2) AS YuvarlanmisSayi; -- Sonuç: 123.46
SELECT ROUND(123.456, 0) AS TamSayiyaYuvarla; -- Sonuç: 123

-- Trigonometrik fonksiyonlar (Radyan cinsinden açı alır)
SELECT SIN(PI()/2) AS SinusDegeri; -- Sinüs (90 derece)
SELECT COS(0) AS CosinusDegeri; -- Kosinüs (0 derece)
SELECT TAN(PI()/4) AS TanjantDegeri; -- Tanjant (45 derece)
SELECT COT(PI()/4) AS KotanjantDegeri; -- Kotanjant (45 derece)

-- Pi sayısının değerini verir
SELECT PI() AS PiSayisi; -- Sonuç: 3.14159265358979

-- Sayının karekökünü alır
SELECT SQRT(25) AS KarekokDegeri; -- Sonuç: 5

-- Sayının belirtilen üssünü alır (POW(taban, üs))
SELECT POWER(2, 3) AS UsAlma; -- Sonuç: 8 (2 üzeri 3)

Gördüğünüz gibi, MS SQL'de birçok farklı kategoride güçlü fonksiyonlar bulunuyor. Bu fonksiyonları kullanarak, verilerinizi istediğiniz formata dönüştürebilir, üzerinde kompleks hesaplamalar yapabilir ve raporlarınızı zenginleştirebilirsiniz. Unutmayın, bu fonksiyonları kullanarak veri tabanı sorgularınızı çok daha efektif hale getirebilirsiniz!

Webkolog'u takipte kalın!

Hepinize bol kodlu ve keyifli öğrenme süreçleri dilerim!

0 yorum:

Yorum Gönder