PDA

View Full Version : مدیریت null در دستور Case



khadem1386
جمعه 07 اسفند 1388, 12:34 عصر
با سلام:
توی دستور select یک من برای مقادیر ستونهایم از دستور case استفاده کردم به شرح زیر



CASE Field4 WHEN Null THEN 'Unknown' WHEN 1 THEN 'Yes' WHEN 0 THEN 'No' else 'Invalid' end as Field4

متاسفانه وقتی وضعیت field به حالت Null باشه این ستون گزینه Invalid را برمی گردانه نه Unknown را ، چه باید بکنم.

با تشکر

محمد سلیم آبادی
جمعه 07 اسفند 1388, 12:57 عصر
CASE WHEN Field4 IS NULL THEN 'Unknown' WHEN Field4 = 1 THEN 'Yes' WHEN Field4 = 0 THEN 'No' ELSE 'Invalid' END

khadem1386
دوشنبه 10 اسفند 1388, 10:28 صبح
یک سوال دیگه:

استفاده از دستور case به این ترتیب بالا چه مزیت هایی نسبت به استفاده از و کنترل دیتا از طریقت اسکریپت داخل برنامه داره؟

یعنی آیا بهتر این وظیفه را به sql واگذار کنم یا اینکه داخل خود script از گزینه switch یا if استفاده کنم.

چه مزیتهایی داره چه مضراتی؟

آیا اگر دستورات select در sql طولانی بشوند برای server دیتا بیسم سنگین نخواهند بود؟

با تشکر

محمد سلیم آبادی
سه شنبه 11 اسفند 1388, 00:26 صبح
یک سوال دیگه:

استفاده از دستور case به این ترتیب بالا چه مزیت هایی نسبت به استفاده از و کنترل دیتا از طریقت اسکریپت داخل برنامه داره؟

یعنی آیا بهتر این وظیفه را به sql واگذار کنم یا اینکه داخل خود script از گزینه switch یا if استفاده کنم.

چه مزیتهایی داره چه مضراتی؟

آیا اگر دستورات select در sql طولانی بشوند برای server دیتا بیسم سنگین نخواهند بود؟

با تشکر

ببینید، کلا CASE یک قابلیت فوق العاده ویژه ای به زبان SQL داده. که حتی می تونیم از CASE در توابع تجمعی مثل SUM و MAX استفاده کنیم.
استفاده از این دستور کار درستیه و طولانی شدن دستور SELECT نمی تونه به هزینه های اجرای کوئری افزوده کنه.