در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

محمد

یافتن فیلدهای خالی در SQL Server

باسلام خدمت دوستان عزیز

برای یافتن فیلدهای خالی و فیلدهایی که NULL هستند در SQL Server چگونه باید عمل کرد؟

مثلا می خواهم لیست افرادی را نمایش بدهد که فیلد Name آنها خالی است و مقداری در آن وارد نشده.( در برخی از فیلدهای من عبارت NULL وجود دارد و در برخی دیگر به صورت خودکار معادل طول رشته آن فیلد فضای خالی قرار گرفته ).

با سپاس و تشکر فراوان

این سوال 1 پاسخ دارد.
#یافتن_فیلدهای_خالی_در_sql_server #یافتن_فیلدهای_null #یافتن_مقادیر_خالی
لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.
فرهاد خانلری

فرض میکنیم که نام جدول شما T2 هست و دارای Code و number و Name هست و برای اینکه بدونید کدام یک از Name ها خالی هست از دستور های زیر استفاده کنید

SELECT * FROM T2 WHERE Name IS NULL OR Name = '';

یا

SELECT * FROM T2 WHERE NULLIF(Name, '') IS NULL;

خروجی هم به شکل زیر در میاد

وب سایت توسینسو

خداوند برکتے عظیم به نام "زندگے" به تو بخشیده است . تو چه چیزے به او تقدیم می کنے ؟ هر روز چیــزے هر چند کوچک به او تقدیم کن ، مقداری عشق به مخلوقاتش . . .
  • انتخاب شده به عنوان جواب توسط 1 نفر
محمد

با تشکر از شمادوست عزیز

باتوجه به راهنمایی شما حالا من بخواهم تعداد افرادی را که فیلد Name آنها خالی هست را بدست بیاورم از دستور زیر استفاده می کنم و نتیجه ای متفاوت مشاهده می کنم.

من ابتدا می نویسم کد زیر را:

SELECT * FROM T2 WHERE Name IS NULL OR Name = '';

سپس برای بدست آوردن تعداد آنها کد زیر را می نویسم :

SELECT COUNT(Name) FROM T2 WHERE Name IS NULL OR Name = '';

که تعداد افرادی که در دستور اول نشان میدهد با تعداد افرادی که در دستور دوم نشان می دهد متفاوت است. علت اینکه عملکرد دستور اول با دستور دوم متفاوت است چیست؟

باتشکر

فرهاد خانلری

دستورات شما روی SQL من به درستی نتیجه رو نشون میده یعنی چه NULL و چه خالی بود رو برامون برمیگردونه اطلاعات داخل جدول ات چیه؟

وب سایت توسینسو

خداوند برکتے عظیم به نام "زندگے" به تو بخشیده است . تو چه چیزے به او تقدیم می کنے ؟ هر روز چیــزے هر چند کوچک به او تقدیم کن ، مقداری عشق به مخلوقاتش . . .
محمد

یک رشته از نوع nchar(10) هستش که داخل آنها اعداد و حروف انگلیسی هستش

محمد

در دستور من فقط عبارتهای Name = '' را محاسبه می کنه و مقادیری را که داخل آنها NULL نوشته شده را حساب نمی کنه.

فرهاد خانلری

برای مثال من هم nchar هست ببینید در صورتی محاسبه میکنه که با خالی باشه یا با Space پر شده باشه در این صورت براتون محاسبه میشه من فکر میکنم شما عبارت NULL رو داخل ستون Name تایپ کرده باشید که اگر این چنین هست پس Name شما برابر با خالی نیست چون NULL رو تایپ کردید.

خداوند برکتے عظیم به نام "زندگے" به تو بخشیده است . تو چه چیزے به او تقدیم می کنے ؟ هر روز چیــزے هر چند کوچک به او تقدیم کن ، مقداری عشق به مخلوقاتش . . .
محمد

در دستور اول درست میاره و کامل ولی فقط وقتی از COUNT(Name) استفاده کنم اشتباه می کنه.

فرهاد خانلری

کد زیر رو جایگزین قبلیه کن

SELECT COUNT(*) FROM T2 WHERE Name IS NULL or Name = '';
خداوند برکتے عظیم به نام "زندگے" به تو بخشیده است . تو چه چیزے به او تقدیم می کنے ؟ هر روز چیــزے هر چند کوچک به او تقدیم کن ، مقداری عشق به مخلوقاتش . . .
محمد

متشکرم درست شد.

علتش چی بود ؟

حسین احمدی

مشکل این بود که count(*) همه رکوردهارو برمیگردونه اما وقتی برای count نام ستون رو مشخص میکنی فقط ردیف هایی که مقدارشون null نیست در نظر گرفته میشن.

لطفاً سوال خود را در انجمن مطرح کنید، به سوالات در پیام خصوصی پاسخ داده نخواهد شد

این پست توسط فرهاد خانلری در تاریخ سه شنبه, 7 بهمن 1393 حذف شده است.

دلیل: برای تشکر از گزینه "پسندیدم" و برای انتخاب جواب از گزینه "انتخاب به عنوان جواب" استفاده نمایید.

پاسخ شما
برای ارسال پاسخ خود وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....