« Önceki   Sonraki »

CASE WHEN

Erkan Sezer

Sql Server da kullanışlı bir fonksiyon olan Case fonksiyonu ile ilgili küçük bir örnek yapacağım. tblmusteri adinda bir table`ımız olduğunu ve bunun da id  (auotincrement), musterino , isim , adress ve il kolonlarının bulunduğunu düşünelim, il kolonu integer türünde ve biz bu kolonun varchar yani string olarak değerini görmek istiyoruz. İşte burda Case bize çok uygun bir yapı sağlar.

 select * from tblmusteri  WITH (NOLOCK)    dediğimizde bizim karşımıza gelecek data aşağıdaki gibidir.

1 1001 Erkan Sezer Kadıkoy 34

7 1002 Mehmet Dal Ermenek 70

3 1003 Aynur Guney Ermenek 70

4 1004 Muhammet Ali Hancer Cekmekoy 34

5 1005 Yavuz Selim Keresteci Goztepe 34

Peki ben bu il kolonunu nasil string yaparım?  Select ifademi aşağıdaki gibi değiştirirsem bana ilisim isminde bir kolon daha gelecektir ve burda da il isimlerinin yazdığını göreceğiz. Peki select ifademde ne yaptığımı kısaca anlatacak olursak; gelen il değerine bakıldı ve bu değer 34 ise İstanbul , 70 ise Karaman olarak ilisim kolonuna getirildi. Bu yapı çok kullanışlıdır ve bize çoğu zaman çok kısa çözüm yolları sunar. Select ifademiz ve gelen yeni data ağağıdaki gibidir.

SELECT *

CASE il 

WHEN `34` THEN `İstanbul` 

WHEN `70` THEN `Karaman` END 

AS ilisim

FROM tblmusteri WITH (NOLOCK)   

1 1001   Erkan Sezer   Kadıkoy   34  İstanbul
7 1002   Mehmet Dal   Ermenek   70   Karaman
3 1003   Aynur Guney   Ermenek   70   Karaman
4 1004   Muhammet Ali Hancer   Cekmekoy   34   İstanbul
5 1005   Yavuz Selim Keresteci   Goztepe   34   İstanbul


07 Şubat 2010 Pazar


IF EXISTS Kontrolu

Erkan Sezer

Sql Server de IF EXISTS ifadesinin nasil kullanilabilecegini anlatacagim. Ornegin table1 isminde bir table var ve bundan da id kolonunuz olsun, bu kolonda 1 ve 2 degerlerinin oldugunu dusunuyoruz. Simdi bu table1 tableinin id kolonunun degerine gore ekrana kayit var veya kayit yok yazdiracagiz.

Tabiki siz bu yazdirma islemi yerine sql de istediginiz islemleri yapacaksiniz :) Asagidaki ifadede yukarda da belirttigim gibi id degerinin 1 oldugu satir var ve bu yuzden ekrana "Kayit Var" yazacaktir.

IF EXISTS ile bu ifadeye bakiyorum ve 1 degeri oldugu icin ilk BEGIN END bloguna girerek istedigim islemleri (update , delete , insert veya transaction) veya da ELSE blogunda gerekli islemleri yaptiririm.

IF EXISTS(select * from dbo.table1 where id = 1 ) 
BEGIN 
    SELECT `Kayit Var`
END
ELSE
BEGIN
    SELECT `Kayit Yok`
END

29 Kasım 2009 Pazar


Sql de Database Ismini Degistirmek

Erkan Sezer

Cok da kullanilmayan bir durumdur ama yine de burda yazmak istedim. Sql Server da database imiz var ve bunun ismini degistirmek istedik bunu asagidaki sekilde bir sp call ederek rahat bir sekilde yapabiliriz.

EXEC sp_renamedb `erkan`, `sezer`

Burda dikkat etmemiz gereken ilk parametre database ismi ikincisi ise isimlendirmek istedigimiz database in yeni ismidir.

26 Eylül 2009 Pazartesi


T-SQL de Bolme Islemi

Erkan Sezer

T-Sql de bolme islemi yaparken dikkat etmemiz gereken kucuk bir noktadan bahsedecegim.
Bolme isleminde bolunenin deger turu float ceya decimal olmalidir . Asagidaki ornektede goreceginiz gibi bu deger turu float veya decimal degilse sonuclar yanlis cikacak ve ozellikle bankacilik gibi muhasebe islemlerinin cok oldugu sektorlerde bize buyuk zararlar verecektir.

Asagidaki ornekte gordugunuz gibi bize ilk donen select 0 olurken convert ile float turune cast edilen bolunen sonucunda bize 0.75 degeri donecektir.

SELECT 3/4;
SELECT CONVERT(FLOAT, 3) / 4

Ayni sekilde convert ile ayni islemi yapan CAST fonksiyonu ile de bu islemi gerceklestirebiliriz. Buda da FLOAT a degil de DECIMAL a cat ediyoruz bolunen degeri.

SELECT 3/4;
SELECT CAST(3 AS DECIMAL) / 4

Ikinci select sonucu decimal e cast ettigimiz icin boluneni bize 0.750000 degeri yani yukardaki ile ayni deger donecektir.

12 Eylül 2009 Cumartesi


SQL Server` da Temp Table

Erkan Sezer

Sql Server kullanirken bazi bilgiler uzerinde oynama yapmak isteriz. Ornegin select attigimiz table dan gelen kayitlar uzerinde null degerler5 olabilir , yeni bir kolon eklemek isteyebiliriz veya bazi kolonlardaki degerleri update etmek isimize gelecektir.

Buna benzer durumlardan dolayi sql de bulunan table dan cektigimiz kayitlari temp table a yazdirabiliriz. Ben sadece 3 kaydi olan basit bir table i temp table a yazdirmayi ve burdan degerleri select etmeyi, son olarak da temp table i tumden silmeyi asagidaki gibi gosterecegim.

Table ismimiz kullanici: Select attigimizda asagiki gibi degerleri gorecegiz.

KullaniciAdi AdSoayd Adres

erkansezer Erkan Sezer Sahrayicedit

yavuzselim Yavuz Selim Keresteci Goztepe

muhammetali Muhammet Ali Hancer Cekmekoy

Daha sonra bunlari asagidaki gibi #tmp isimli bir table a yazdiririz , select attgimizda yine ayni degerleri gorecegiz.

SELECT * INTO #tmp FROM kullanici 

Burda #tmp isimle table olusturuldu ve kullanici table indaki kayitlar buraya insert edildi.  

Bu temp table a su sekilde select atabiliriz : SELECT * FROM #tmp

Bu select ile yukardaki select ayni olacaktir. Son olarakda islemlerimiz bittiginde bu temp table i asagidaki gibi drop etmemiz gerekir.

DROP TABLE #tmp


16 Ağustos 2009 Pazar


Sql`de Calisan Exe`nin Ismi

Erkan Sezer

Database olarak Sql Server`i kullanan ve birden fazla sayida exemiz olduğunu varsayalım. Hangi exe`de çalıştığımızı bulmak için genellikle SQL`e strored procedure ile parametre geçiyoruz. Bu iş hem zahmetli hemde maliyetli olmaktadır, bunu çok daha efektik ve kolay olarak yapabiliriz.

Yapacagimiz tek sey : SQL de hangi exenin calistigini bulmak,bunun icin Application name`ini bulursak işlerimiz çok kolaylasacaktir. Bunu da asagidaki kod blogu ile rahat sekilde bulabilmekteyiz.

SELECT APP_NAME()

If  donguleri kullanarak bu bizim icin cok büyük kolayliklar saglayacaktir.

IF APP_NAME()=`Exe nin İsmi`

BEGIN

   Yapmak istediginiz islem

END


22 Nisan 2009 Çarşamba


Sql Server 2008 Intellisense

Erkan Sezer

Visual Studio idesi ile kod yazarken bize buyuk kolayliklar salayan Intellisense ozelligi Sql Server 2008 ile birlikte T Sql yazarken bize sunuldu. Bunda onceki versiyonlarda third party uygulamalarla kullandigimiz intellisense ozelligi bize buyuk kolayliklar saglayacak.

Select * from ifadesinde Ctrl + Space tusu ile table isimlerini artik otomatik olarak gorebilecek ve istedigimiz table ismine daha kolay ulasacagiz. Bircok karmasikligi cozecek olan bu durum table isimlerini de tam olarak bilmek gerektirmeyecek. Ayrica join ifadelerinde otomatik olarak ad siralamasi yapacagi icin , bizi bircok hatadan da kurtaracak.


13 Nisan 2009 Pazartesi


Sql`de Table`a Kolon Eklemek / Değiştirmek

Erkan Sezer

Sql Server`da tablelar oluştururken genellikle hep wizardları kullanırız Bu bizim için büyük kolaylıklar sağlar fakat büyük bir projede olduğumuzu düşünürsek her seferinde tek tek tablelari bulmakla uğraşabailiriz.

Daha da önemlisi dba bize tableları alter edecek yetki vermemişse ne yaparız? dba`e bu sql scriptini göndeririz. Ben burda oluşturulan tabloya kolon eklemeyi ve var olan bir kolonun değiştirilmesini anlatacağım.

ALTER TABLE Table_Ismi ADD Kolon_Ismi VARCHAR(40)

Burda Varchar tipinde ve 40 karakter uzunluğunda bir kolon ekliyoruz. Tabiki bunu istediğiniz kadar artırabilirsiniz.

Kolon üzerinde değişikliği ise şu şekilde yapabiliriz:

ALTER TABLE Table_Ismi ALTER Column Kolon_Ismi VARCHAR(38) 


05 Şubat 2009 Perşembe

« Önceki   Sonraki »