مشکل جستجو در تیبل توسط دستور select
با سلام
من از به عنوان مثال از دستور زیر برای جستجو استفاده می کنیم.
select nam from master where kod=1
حال می خواهم کاری کنم که توی فیلد آدرس هم جستجو کنم. به صورتی که زمانی که پارامتر ورودی null باشه جستجو توی تمام رکورد ها انجام بشه
select nam from master where kod=1 and (address = isnull(@search,address))
در حالت کلی با این مدل دستور ها هیچ مشکلی ندارم. مشکل از اون جایی شروع میشه که اگر فیلد های address من توی table هم null باشه، اون رکورد ها رو برای جستجو در زمانی که متغییر @search من هم null باشه نمایش نمی ده.
به عبارت دیگر، اگر دستور رو به صورت زیر بنویسم
select nam from master where kod=1 and (family = isnull(@search_family,family))
هیچ مشکلی ندارم. چرا که تمامی فیلد های family من دارای متغییر هست. واگر @search_family من هم null باشه، باز هم تمامی رکورد های من و نشون میده
ولی توی فیلد آدرس، به دلیلی اینکه همه رکورد ها شامل مقادیر addressنمی باشند. زمانی که @search برابر null باشه، تمامی رکورد ها نمایش داده نمیشه.
چه راهی برای حل این مشکل پیشنهاد می کنید.
خیلی خیلی ممنون
نقل قول: مشکل جستجو در تیبل توسط دستور select
سلام
از این منطق استفاده کنید.
Select * from Table1
wehre Field1=Coalesce(@PAram1,Feild1)
نقل قول: مشکل جستجو در تیبل توسط دستور select
نقل قول:
نوشته شده توسط
حمیدرضاصادقیان
سلام
از این منطق استفاده کنید.
Select * from Table1
wehre Field1=Coalesce(@PAram1,Feild1)
سلام
متسفانه باز هم نشد. دلیل این هست که کل رکورد های درون Field1 برابر null هست.
با استفاده از این دستور هم فقط رکورد هایی که مقدار داشته باشند و نشون میده.
چه راهی پشنهاد می کنید؟؟
نقل قول: مشکل جستجو در تیبل توسط دستور select
این دستور داره میگه که اگه پارامتر بهش ارسال شد ، همون مقدار رو بیار اگر نشد کل رکوردهارو بیار . یعنی اگه null به این پارامتر پاس بدین کل رکوردهارو میاره.
کار این تابع این هست که نگاه میکنه اولین پارامتر اگه مقدار داشته باشه اونو میذاره اگه نه مقدار دوم رو میذاره.
کدی که نوشتین رو بذارید
2 ضمیمه
نقل قول: مشکل جستجو در تیبل توسط دستور select
نقل قول:
نوشته شده توسط
حمیدرضاصادقیان
این دستور داره میگه که اگه پارامتر بهش ارسال شد ، همون مقدار رو بیار اگر نشد کل رکوردهارو بیار . یعنی اگه null به این پارامتر پاس بدین کل رکوردهارو میاره.
کار این تابع این هست که نگاه میکنه اولین پارامتر اگه مقدار داشته باشه اونو میذاره اگه نه مقدار دوم رو میذاره.
کدی که نوشتین رو بذارید
سلام
این هم از کد :
SELECT sanad_master.serial, sanad_master.tarikh,
sanad_master.ta_madrak, sanad_master.ser_madrak, sanad_master.bes, sanad_master.bed, sanad_master.moghayerat, sanad_master.exp0
FROM bank LEFT OUTER JOIN
sanad_master ON bank.tafsili2 = sanad_master.tafsili2 AND bank.tafsili1 = sanad_master.tafsili1 AND bank.moin = sanad_master.moin AND
bank.kol = sanad_master.kol AND bank.group_hesab = sanad_master.group_hesab
WHERE
(sanad_master.exp0= Coalesce(@exp0,sanad_master.exp0))
order by sanad_master.tarikh desc
تصویر زیر زمانی هست که دستور where رو حذف می کنم. و نتیجه رو نشون میده
این تصویر مربوط به زمانی هست که دستور where رو اضافه می کنم
این و هم بگم که از توی خود نرم افزار هم هیمن جوریه. ولی برای کمک کردن راحت شما دستور رو توی SQL نشون دادم. اگر فیلد exp0 رو روی توی تیبل مقدار خاصی بهش بدم، شرط به درستی کار میکنه. ولی اگر null باشه همچین مشکلی به وجود میاد
با تشکر
ممنون میشم که کمک کنید. خیلی روی اعصابمه
نقل قول: مشکل جستجو در تیبل توسط دستور select
اینجوری بنویسید
where Sanad_master.exp0=@Exp0 or @Exp0 is null
نقل قول: مشکل جستجو در تیبل توسط دستور select
خیلی خیلی ممنون
حل شد:لبخندساده: