PDA

View Full Version : تابع isnull در زمانیکه شرط صدق نمی کند جواب نمی دهد ، چرا ؟؟



Sal_64
شنبه 29 مهر 1391, 09:53 صبح
select isnull(etebar,0)as etebar from tarh1 where code=@code and dastgah=@dastga -سلام وقتی شروط صدق نکنه یعنی رکوردی با این مشخصات پیدا نشه هیچ چیزی برنمی گردونه - چیکار کنم که همیشه یا عدد برگردونه یا صفر ؟؟ تشکر

svahidm
شنبه 29 مهر 1391, 13:44 عصر
شما می تونی قبل از دستورت با یه دستور به صورت اگر موجود است اول چک کنی که هیچ رکوردی هست یا نه و بعدا null بودن فیلد مورد نظرت رو بررسی کنی :
IF(EXISTS(select etebar from tarh1 where code=@code and dastgah=@dastga))
select isnull(etebar,0)as etebar from tarh1 where code=@code and dastgah=@dastga
ELSE .....

Sal_64
شنبه 29 مهر 1391, 15:28 عصر
سلام - تشکر- قراره اون کد در داخل این دستور استفاده بشه اما خب خطا میده- میشه ببینید- تشکر

svahidm
شنبه 29 مهر 1391, 18:53 عصر
سلام برای این موردی که عکس گذاشتین میتونی اینو بنویسی که من فقط جهت اطلاع برات میذارم ولی اصلا بهینه نیست :select d1.etebar , d2.kole_etebar
from
(select 1 as code , (case when (Exists(select etebar from tarh1 where code=x and dastgah = y)) then
(select ISNULL(etebar,0) from tarh1 where code=x and dastgah = y)
else 0 end ) as etebar) as d1


برای حالت بهینه میتونی اینجور بنویسی :
select isnull(d1.etebar,0) , d2.kole_etebar
from
(select 1 as code , (select etebar from tarh1 where code=x and dastgah = y) as etebar ) as d1