23 Ağustos 2014 Cumartesi

SQL'de IF...ELSE Yapısının Kullanımı

Merhabalar, 
Bu makalemde SQL'de  IF...ELSE yapısının kullanımını anlatmaya çalışacağım.
  • Programlama dillerinde olduğu gibi SQL'de de kontroller kullanılır.
  • Kontroller BEGIN deyimi ile başlayıp END deyimi ile biten kod blokları arasında yazılır.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 
IF...ELSE Karar Yapısı:
Bizim belirlediğimiz şartları kontrol eder. Bu şartların doğru olması halinde farklı işlemler, yanlış olması halinde farklı işlemler yapılmasını sağlar.

IF...ELSE Kullanımı: 
IF(Şart1) 
BEGIN     
    İşlemlerimiz 
END   

ELSE IF(Şart2) 
BEGIN     
    İşlemlerimiz 
END   

ELSE 
BEGIN     
    İşlemlerimiz 
END

Örnek Sorgu:
DECLARE @urunsay INT
SET @urunsay=(SELECT Products.UnitsInStock
FROM Products
WHERE Products.ProductID=4)
IF(@urunsay<20)
BEGIN
PRINT 'ProductID 2 olan ürünün stoğu kritik seviyede'
END
ELSE
BEGIN
PRINT 'Ürün için yeterli miktarda stok mevcut'
END




SQL'de String Fonksiyonları

  • SQL'de karakter değerleri üzerinde işlem yapmak için String (karakter) fonksiyonları kullanılır.

SQL'de Tarih ve Zaman Fonksiyonları

  • Tarih ve zaman fonksiyonları, MSSQL kurulumunda hazır olarak gelen, tarih ve zaman ifadeleri üzerinde işlem yapabilmemizi sağlayan fonksiyonlardır.
GETDATE() Fonksiyonu: Sistemin anlık tarih ve saat değerini döndürür.



DATEADD() Fonksiyonu: Başa yazılan parametre cinsinden zamanı belirtilen ölçüde arttırır.

NOT: Bu fonksiyonda dd(gün) mm(ay) yy(yıl) anlamına gelmektedir.

Örneğimiz de  DATEADD Fonksiyonu ile 2014.08.23 tarihine 2 gün eklemekteyiz.

DATEDIFF() Fonksiyonu: Başa yazılan parametre (Hafta için 'wk' Gün için 'dd' Saat için 'hh' Dakika için 'mi' Saniye için 'ss') cinsinden iki tarih arasındaki farkı döndürür.



DATEPART() Fonksiyonu: Verilen tarih-saat parametresini parçalarına ayırıp istenilen parçayı almaya yarar.


ISDATE() Fonksiyonu: Girilen string değeri tarih formatına uygunsa 1, değilse 0 döner.



SYSDATETIME() ve SYSDATETIMEOFFSET() Fonksiyonları: 
SYSDATETIME Timestamp değerini bölgesel saat farklılıklarını göstermeden döner.
SYSDATETIMEOFFSET Tarih ve saati bölgesel saat farklılıklarıyla beraber döner.




SQL'de PRINT Kullanımı

  • Değişkenlerin değerlerini, hataları ve diğer ihtiyaç duyulan durumlarda PRINT komutu kullanılır. DEBUG işlemi için ihtiyaç duyulan bir komuttur.
PRINT Kullanımı : PRINT @<Değişken_Adı>

Örnek Sorgu: soyad değişkeninin içeriği PRINT ile gösterilmiş olacaktır.

DECLARE @soyad VARCHAR(15) SELECT @soyad=’Bayraktar’ PRINT @soyad

PHP'de Para İşlemleri, MySQL Kolon Tipi ve Kullanımı

Bir proje hazırlıyorsanız,dışardan kullanıcıya para birimi girdirmek istiyorsanız ve bunu nasıl yapacağınızı bilmiyorsanız; mysql veri tipi ne olacak ? dışardan para birimini , (virgüllü) mü girsek . (noktalı) mı girsek veya girdirsek mi vs diyorsanız bu makale tam size göre.

Aşağıdaki temizle fonksiyonu dışardan girilen değeri düzenler, şimdi satır satır inceleyelim.
    function temizle($veri)
    {
    $veri1=substr($veri,0,-3); //Virgülden önceki değeri veri1 değişkenine alıyoruz.
    $veri2=substr($veri,-3,3); //virgül dahil son 3 karakteri veri2 değişkenine alıyoruz.
   
    $veri1=str_replace(",","",$veri1); //veri1 deki varsa ,(virgül) karakterini sildiriyoruz.
    $veri1=str_replace(".","",$veri1); //veri1 deki varsa .(nokta) karakterini sildiriyoruz.
  
    $veri2=str_replace(",",".",$veri2); //veri2 deki varsa ,(virgül) karakterini noktaya çeviriyoruz.
    $son=$veri1.$veri2; //ayarları yaptıktan sonra iki sayıyı birleştirip son değişkeninde yolluyoruz.
    return $son;
    }
bu fonksiyonu arayüz kodlarında kullanmak için;
$deger1=temizle("$deger1"); //değer1i temizle fonk. ile çağırdık.
$sonFiyat=number_format($deger1,2,",","."); //bu format türkiye para birimi için geçerli.
veritabanına kayıt yaparken kullanacağınız değişken $sonFiyat değişkenidir.
1.365,96 sayisi için işlemler şu şekilde ilerleyecek

önce;
veri1=1.365
veri2=,96

daha sonra;
veri1=1365
veri2=.96 olacak

sonra bu sayılar 1365.96 olarak $son değişkeninde yollanacak.
bu değer number_format fonksiyonuna girecek sondan 2 basamak aktif olacak şekilde son 2 rakam virgül ondan öncekiler . olacak şekilde ayıracak. yani 1.365,96 olarak database e yazıcaktır.

Mysql Sutun veri tipi ise varchar(255) optimum seviyededir. Bunu kullanmanız önerilir. Decimal,float vs belli bir seviyeden sonra uçuyor.

İyi çalışmalar.

Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü