Your Ad Here
May 02

Birkac saatimi harcayıp kendi kendime "neden yapamıyorum ya, boyle sacma bişi mi olur?" diye söylenirken SQL Server Books Online ' ı daha dikkatli okudum, ve araya sıkıştırılmış bir cümleyle kendime geldim. Gerçekten isnull T-SQL de yalnizca "null mı değil mi" kontrolünü mü yapar?

Returns the same type as check_expression.

Books Online, Isnull için bunu söyluyor. Yani, isnull kontrol ettiginiz parametreleri, aynı zamanda ilk kontrol ettiginizin tipine ceviriyor.
Örneğin

declare @param1 nvarchar(50), @param2 nvarchar(50),@param3 nvarchar(25)
set @param1 =' 25 karakterden  uzun   bir metin'
set @param2 = @param1

print isnull(@param3,@param1)

-- 25 karakterden  uzun   b    (Print'in output'u)

param3'ün tipi nvarchar(25) oldugu için textin kalanı kesilip atılıyor.    :) ilginc dimi?

Peki, birde bulmak için bu kadar uğrastıgım querynin nasıl birsey olduguna, ve dondurmediği sonuca bakalım.

select * from sysobjects
where @param1 = isnull(@param3,@param2)

Parametre tanımlamalarında gördüğünüz üzere, @param3 null oldugu için, isnull'ın @param2'yi döndürmesini, @param2 ve @param1 de birbirine eşit olduğu için tablodaki tüm kayıtları görebilmeyi umuyordum. Fakat, malesef, elimizde kocaman bir boş küme :)

Aklımızda, bloğumuzda bir yerlerde kalsın. Unuttukça açıp bakarız.
İyi & Dikkatli çalışmalar.

Tags:

Comments

Eralp

Posted on Friday, 11 May 2007 02:14

Selamlar Kıvanç ;

cast işlemini kullanırsak doğru sonuç verir.Aklımız da bulunsun :)

print isnull(cast(@param3 as nvarchar(50)),@param1)

select * from sysobjects
where @param1 = isnull(cast(@param3 as nvarchar(50)),@param2)


Kivanc

Posted on Saturday, 12 May 2007 11:34

Eralpcim,
Kesinlikle haklısın. Senin yazdığın şekliyle tamamen doğru çalışır. Fakat benim dikkat çekmek istediğim nokta, isnull fonksiyonunun yalnızca null kontrolu yapmadığı, aynı zamanda, type casting te yaptigidir.
Bence, kendisinden pek beklenmeyecek bir işlem yapmakta.

Eralp

Posted on Wednesday, 16 May 2007 13:05

Belki exception throw ediyordur oyle yapmazsa eeueu :)

Aldığım bir duyuma göre Microsoft'da deyimi yerindeyse en "hımbıl" departman SQL Server'cılarınmış :=)


Eralp

Kivanc

Posted on Wednesday, 16 May 2007 13:07

Eralp'cim,
senin MVP'lik güme gitmesin boyle MS calisani profesyonel amcalarimiza "Himbil" filan diyorsun..!

Eralp

Posted on Wednesday, 16 May 2007 15:45

Selamlar Kıvanç ;

Sezar'ın hakkı sezar'a diyorum..

Benim ki bir eleştiri.

Hem hımbıl çok sevimli bir kelime , öyle değil mi ?
:D

Add comment


(Will show your Gravatar icon)  

  Country flag


  • Comment
  • Preview
Loading



Software Blogs TopOfBlogs