📞 02166056460

دستور ISNULL در اس کیو ال

10 / 10
از 1 کاربر
بازگشت به لیست مقالات » | پنجشنبه 30 مهر 1405 در ساعت 14 و 10 دقیقه | نظرات کاربران ( 1 )
آموزش SQL

دستور ISNULL در SQL؛ آموزش کاربرد، تفاوت‌ها و مثال‌ها

یاد بگیرید مقدارهای NULL را در شرط‌ها پیدا کنید و در خروجی با مقدار مناسب جایگزین کنید.

دستور ISNULL در SQL در گفت‌وگوهای آموزشی گاهی برای اشاره به دو مفهوم متفاوت به کار می‌رود: شرط IS NULL و تابع ISNULL(). اولی رکوردهایی را پیدا می‌کند که مقدار یک ستون آن‌ها نامشخص است؛ دومی در برخی پایگاه‌های داده، از جمله SQL Server، مقدار جایگزینی را به جای NULL برمی‌گرداند. شناخت این تفاوت از خطاهای رایج در فیلترکردن داده‌ها و ساخت گزارش جلوگیری می‌کند.

در این راهنما، ابتدا مفهوم NULL را بررسی می‌کنیم، سپس نمونه‌های کاربردی IS NULL و IS NOT NULL را می‌بینیم و در ادامه سراغ تابع ISNULL() و گزینه‌های مشابه در پایگاه‌های داده دیگر می‌رویم. مثال‌ها با جدول فرضی Persons نوشته شده‌اند و می‌توانید نام جدول و ستون‌ها را متناسب با پروژه خود تغییر دهید.

۰۱

دستور ISNULL در SQL دقیقاً به چه معناست؟

در SQL، مقدار NULL نشان می‌دهد که یک مقدار برای ستون ثبت نشده، در دسترس نیست یا هنوز مشخص نشده است. این مقدار با صفر، رشته خالی و فاصله تفاوت دارد. برای نمونه، صفر می‌تواند تعداد واقعی یک کالا باشد، اما NULL یعنی تعداد کالا در داده موجود نیست یا ثبت نشده است.

عبارت IS NULL یک شرط برای بررسی همین وضعیت است. این شرط در بخش WHERE قرار می‌گیرد و ردیف‌هایی را برمی‌گرداند که ستون موردنظرشان مقدار NULL دارد. در مقابل، IS NOT NULL ردیف‌هایی را انتخاب می‌کند که ستون آن‌ها مقداری ثبت‌شده دارد.

در SQL Server تابعی نیز با نام ISNULL(expression, replacement_value) وجود دارد. این تابع مقدار اول را بررسی می‌کند: اگر NULL باشد، مقدار جایگزین را برمی‌گرداند و اگر NULL نباشد، همان مقدار اصلی را حفظ می‌کند. بنابراین تابع ISNULL() را نباید با شرط IS NULL یکی دانست.

این تفاوت در عمل مهم است. اگر هدف شما پیدا کردن مشتریانی است که آدرس آن‌ها ثبت نشده، به شرط IS NULL نیاز دارید. اگر می‌خواهید در گزارش، آدرس ثبت‌نشده با عبارتی مانند «نامشخص» نمایش داده شود، می‌توانید از تابع جایگزینی مناسب پایگاه داده استفاده کنید.

۵ نکته مهم درباره ISNULL در SQL

۰۲

۱. برای NULL از علامت مساوی استفاده نکنید

NULL به معنی «مقدار نامعلوم» است و با یک مقدار معمولی قابل مقایسه نیست. به همین دلیل، شرط Address = NULL روش درست بررسی ستون خالی از نظر NULL نیست. برای چنین بررسی‌ای باید از عبارت Address IS NULL استفاده کنید.

برای مثال، اگر در جدول Persons بخواهید افرادی را پیدا کنید که نشانی آن‌ها وارد نشده است، این پرس‌وجو نتیجه مورد انتظار را برمی‌گرداند:

SELECT LastName, FirstName, Address
FROM Persons
WHERE Address IS NULL;

سناریوی کاربردی آن، پیدا کردن پرونده‌هایی است که پیش از ارسال نامه نیاز به تکمیل نشانی دارند. توجه کنید که رشته خالی، مانند ''، با NULL یکی نیست؛ اگر سامانه رشته خالی ذخیره کرده باشد، شرط بالا آن ردیف را پیدا نمی‌کند.

۰۳

۲. تفاوت IS NULL و IS NOT NULL را بشناسید

شرط IS NULL ردیف‌های فاقد مقدار را انتخاب می‌کند؛ شرط IS NOT NULL برای انتخاب ردیف‌هایی است که مقدار ستون در آن‌ها ثبت شده است. این دو شرط مکمل یکدیگرند و در گزارش‌گیری، کنترل کیفیت داده و بررسی کامل‌بودن فرم‌ها کاربرد زیادی دارند.

برای مثال، اگر بخواهید فهرست افرادی را ببینید که نشانی آن‌ها موجود است، می‌توانید از کد زیر استفاده کنید:

SELECT LastName, FirstName, Address
FROM Persons
WHERE Address IS NOT NULL;

در یک سامانه ثبت‌نام، این شرط می‌تواند برای استخراج کاربرانی به کار رود که شماره تماس یا نشانی خود را وارد کرده‌اند. با این حال، وجود یک مقدار به‌تنهایی تضمین نمی‌کند که آن مقدار معتبر باشد؛ ممکن است داده‌ای نامرتبط یا ناقص در ستون ذخیره شده باشد. بررسی اعتبار داده معمولاً به شرط‌های جداگانه نیاز دارد.

۰۴

۳. NULL با رشته خالی و فاصله فرق دارد

ستون متنی ممکن است NULL، رشته خالی یا رشته‌ای شامل یک یا چند فاصله داشته باشد. از نظر داده‌ای، این حالت‌ها الزاماً یکسان نیستند. شرط IS NULL فقط مقدار NULL را پیدا می‌کند و به‌تنهایی رشته خالی یا فاصله را تشخیص نمی‌دهد.

برای نمونه، فرض کنید فرم ثبت‌نام به کاربر اجازه دهد نشانی را خالی ارسال کند. بسته به منطق برنامه و پایگاه داده، ممکن است برای آن ستون NULL یا رشته خالی ذخیره شود. اگر گزارش شما فقط از IS NULL استفاده کند، ردیف‌هایی که مقدارشان '' است از نتیجه جا می‌مانند.

در صورت نیاز به بررسی چند حالت، شرط‌ها را آگاهانه ترکیب کنید. کد زیر نمونه‌ای برای پیدا کردن مقدار NULL یا رشته خالی در SQL Server است:

SELECT LastName, FirstName, Address
FROM Persons
WHERE Address IS NULL
   OR Address = '';

اگر فاصله‌های ابتدا یا انتهای متن نیز باید در نظر گرفته شوند، ابتدا باید مشخص کنید که با فاصله‌ها چه رفتاری می‌خواهید. پاک‌سازی داده در پرس‌وجو یا هنگام ورود اطلاعات، به نوع ستون و قواعد پروژه وابسته است؛ بنابراین بهتر است سیاست یکسانی برای ثبت و نگهداری داده‌ها داشته باشید.

۰۵

۴. تابع ISNULL() برای جایگزینی مقدار به کار می‌رود

در SQL Server، تابع ISNULL() زمانی مفید است که می‌خواهید مقدار NULL در نتیجه پرس‌وجو با یک مقدار جایگزین نمایش داده شود. این تابع معمولاً به دو ورودی نیاز دارد: عبارت یا ستونی که بررسی می‌شود و مقداری که در صورت NULL بودن باید برگردد.

برای مثال، اگر ستون Address خالی از نظر NULL باشد، می‌توانید در نتیجه عبارت «ثبت نشده» را به جای آن نمایش دهید:

SELECT LastName,
       FirstName,
       ISNULL(Address, 'ثبت نشده') AS AddressDisplay
FROM Persons;

این کار مقدار ذخیره‌شده در جدول را تغییر نمی‌دهد؛ فقط خروجی همان پرس‌وجو را شکل می‌دهد. به همین دلیل برای آماده‌سازی گزارش‌ها مناسب است، اما جایگزین‌کردن نمایشی NULL را نباید با اصلاح دائمی داده‌های اصلی اشتباه گرفت.

نوع داده مقدار خروجی نیز اهمیت دارد. در SQL Server، نوع نتیجه تابع ISNULL() بر اساس نوع عبارت اول تعیین می‌شود و مقدار جایگزین باید با آن سازگار باشد. اگر مقدار جایگزین با نوع ستون هم‌خوانی نداشته باشد، ممکن است تبدیل ناخواسته یا خطا رخ دهد؛ پس نوع ستون و مقدار جایگزین را پیش از استفاده بررسی کنید.

۰۶

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

نام تابع جایگزینی NULL ممکن است بین سامانه‌های پایگاه داده فرق کند. ISNULL() در SQL Server شناخته‌شده است، اما در پایگاه‌های داده دیگر ممکن است تابع یا عبارت استاندارد دیگری به کار رود. اگر کد را میان سامانه‌ها جابه‌جا می‌کنید، سازگاری دستورها را بررسی کنید.

برای مثال، COALESCE() در بسیاری از سامانه‌های SQL پشتیبانی می‌شود و نخستین مقدار غیر NULL را از میان ورودی‌های خود برمی‌گرداند. در مقابل، ISNULL() در SQL Server دو ورودی دارد و تنها مقدار اول را با یک مقدار جایگزین مقایسه می‌کند.

نمونه زیر از COALESCE() استفاده می‌کند تا در صورت NULL بودن نشانی، متن جایگزین را نشان دهد:

SELECT LastName,
       FirstName,
       COALESCE(Address, 'ثبت نشده') AS AddressDisplay
FROM Persons;

هرچند این نمونه از نظر نتیجه ساده شبیه ISNULL() است، در جزئیات، از جمله تعداد ورودی‌ها و قواعد نوع داده، تفاوت‌هایی وجود دارد. برای انتقال یک برنامه، فقط عوض‌کردن نام تابع کافی نیست؛ مستندات سامانه مقصد و نتیجه اجرای پرس‌وجو را هم بررسی کنید.

نمونه‌های کاربردی برای انتخاب و نمایش مقدارهای NULL

🔎

پیداکردن مقدارهای ثبت‌نشده

برای فیلترکردن ردیف‌های فاقد مقدار، از شرط IS NULL در بخش WHERE استفاده کنید.

✅

پیداکردن مقدارهای موجود

برای انتخاب ردیف‌هایی که ستون آن‌ها NULL نیست، شرط IS NOT NULL را به کار ببرید.

🔄

جایگزینی در خروجی

در SQL Server تابع ISNULL() می‌تواند مقدار جایگزین را در خروجی پرس‌وجو نمایش دهد.

۰۷

ترکیب بررسی NULL با گزارش‌گیری

گاهی لازم است فقط ردیف‌های دارای مقدار ثبت‌شده را بررسی کنید و سپس نتیجه‌ای قابل‌خواندن برای کاربر بسازید. در این حالت، می‌توانید شرط‌های فیلتر را همراه با تابع جایگزینی به کار ببرید. انتخاب روش به این بستگی دارد که می‌خواهید ردیف‌ها را حذف کنید یا فقط شکل نمایش یک ستون را تغییر دهید.

در نمونه زیر، همه افراد در خروجی باقی می‌مانند، اما برای نشانی‌های NULL عبارت «ثبت نشده» نمایش داده می‌شود:

SELECT LastName,
       FirstName,
       ISNULL(Address, 'ثبت نشده') AS AddressDisplay
FROM Persons
ORDER BY LastName;

اما اگر هدف، گزارش‌گیری فقط از افرادی باشد که نشانی آن‌ها ثبت شده، باید شرط را به پرس‌وجو اضافه کنید:

SELECT LastName, FirstName, Address
FROM Persons
WHERE Address IS NOT NULL
ORDER BY LastName;

در مثال اول، NULL تنها در خروجی به متن تبدیل شده است و ردیف حذف نمی‌شود. در مثال دوم، ردیف‌هایی که نشانی آن‌ها NULL است اصلاً در نتیجه ظاهر نمی‌شوند. این تمایز در ساخت گزارش‌های مدیریتی، فهرست‌های تماس و خروجی‌های قابل دانلود اهمیت دارد.

معرفی خدمات

برای حضور آنلاین، انتخاب آگاهانه داشته باشید

در کنار یادگیری SQL، اگر برای کسب‌وکار خود به خدمات طراحی سایت نیاز دارید، جزئیات و راهکارهای موجود را بررسی کنید.

مشاهده خدمات ←

اشتباهات رایج هنگام کار با NULL

۰۸

استفاده از مساوی به جای IS NULL

نوشتن Column = NULL یکی از خطاهای رایج است. برای بررسی NULL از IS NULL یا IS NOT NULL استفاده کنید. این قاعده به معنی آن نیست که می‌توان رشته خالی را هم با همین شرط پیدا کرد؛ NULL و رشته خالی دو وضعیت جدا هستند.

۰۹

یکی دانستن شرط IS NULL و تابع ISNULL()

شباهت نوشتاری این دو عبارت ممکن است گیج‌کننده باشد، اما کارشان متفاوت است. IS NULL در شرط‌ها برای شناسایی ردیف‌ها به کار می‌رود؛ ISNULL() در SQL Server یک تابع است که می‌تواند مقدار جایگزین را برگرداند. پیش از نوشتن پرس‌وجو مشخص کنید هدف شما فیلترکردن است یا تغییر نحوه نمایش خروجی.

۱۰

فرض‌کردن اینکه مقدار جایگزین، داده اصلی را تغییر می‌دهد

استفاده از ISNULL() در یک دستور SELECT فقط خروجی همان پرس‌وجو را تغییر می‌دهد. اگر لازم است اطلاعات جدول اصلاح شود، باید عملیات به‌روزرسانی جداگانه و با دقت انجام شود. تبدیل نمایشی NULL به متن، به معنای ذخیره‌شدن آن متن در ستون نیست.

مقایسه دستورها و توابع مرتبط با NULL

عبارت کاربرد اصلی نمونه
IS NULL انتخاب ردیف‌هایی که ستون آن‌ها NULL است WHERE Address IS NULL
IS NOT NULL انتخاب ردیف‌هایی که ستون آن‌ها NULL نیست WHERE Address IS NOT NULL
ISNULL() جایگزینی مقدار NULL در خروجی SQL Server ISNULL(Address, 'ثبت نشده')
COALESCE() برگرداندن نخستین مقدار غیر NULL از میان ورودی‌ها COALESCE(Address, 'ثبت نشده')
= '' بررسی رشته خالی؛ نه مقدار NULL WHERE Address = ''

مزایای استفاده درست از شرط‌ها و توابع NULL

مزایای کار با NULL

داده روشن‌تر، گزارش بهتر

انتخاب درست برای هر نیاز
۰۱
فیلتر

یافتن داده‌های ناقص

شناسایی ردیف‌های فاقد مقدار ثبت‌شده

۰۲
نمایش

خوانایی بهتر گزارش

نمایش متن جایگزین به جای NULL

۰۳
کنترل

بررسی کامل‌بودن اطلاعات

تفکیک مقدارهای موجود از مقدارهای نامشخص

۰۴
سازگاری

انتخاب تابع متناسب

توجه به تفاوت سامانه‌های پایگاه داده

۰۵
دقت

کاهش خطاهای پرس‌وجو

پرهیز از مقایسه نادرست NULL با مساوی

۱۱

نتیجه‌گیری: انتخاب درست دستور ISNULL در SQL

برای پیدا کردن ردیف‌هایی که مقدار یک ستون در آن‌ها ثبت نشده است، از IS NULL استفاده کنید و برای انتخاب ردیف‌های دارای مقدار، سراغ IS NOT NULL بروید. اگر در SQL Server می‌خواهید مقدار جایگزینی را در خروجی نمایش دهید، تابع ISNULL() می‌تواند مناسب باشد؛ در سامانه‌های دیگر، سازگاری تابع‌هایی مانند COALESCE() را بررسی کنید.

همچنین به یاد داشته باشید که NULL با صفر، رشته خالی و فاصله تفاوت دارد و استفاده از ISNULL() در یک پرس‌وجو داده اصلی را تغییر نمی‌دهد. با روشن‌کردن هدف پرس‌وجو و انتخاب درست میان شرط و تابع، دستور ISNULL در SQL و عبارت‌های مرتبط با آن را دقیق‌تر و مطمئن‌تر به کار می‌برید.

سوالات متداول دستور ISNULL در SQL

آیا IS NULL و ISNULL() یکی هستند؟

خیر. IS NULL شرطی برای پیدا کردن ردیف‌هایی است که مقدار یک ستون آن‌ها NULL است. ISNULL() تابع SQL Server است و می‌تواند در خروجی، مقدار جایگزینی را به جای NULL برگرداند.

چطور ردیف‌هایی را پیدا کنم که مقدار ستون آن‌ها NULL است؟

نام ستون را همراه با شرط IS NULL در بخش WHERE بنویسید؛ برای نمونه: SELECT * FROM Persons WHERE Address IS NULL;. برای بررسی NULL از عملگر مساوی استفاده نکنید.

آیا IS NULL مقدارهای رشته خالی را هم پیدا می‌کند؟

خیر. رشته خالی مانند '' با NULL متفاوت است. برای پیدا کردن هر دو حالت، باید شرط‌ها را متناسب با نیاز ترکیب کنید؛ برای نمونه Address IS NULL OR Address = ''.

آیا ISNULL() اطلاعات جدول را تغییر می‌دهد؟

خیر. در یک دستور SELECT، تابع ISNULL() فقط مقدار نمایشی خروجی را عوض می‌کند. داده اصلی جدول با این تابع تغییر نمی‌کند و برای به‌روزرسانی داده باید از دستور جداگانه و متناسب استفاده شود.

آیا تابع ISNULL() در همه پایگاه‌های داده وجود دارد؟

خیر. ISNULL() در SQL Server کاربرد دارد، اما نام و رفتار توابع جایگزین NULL ممکن است در سامانه‌های دیگر متفاوت باشد. برای کد قابل‌انتقال، مستندات پایگاه داده مقصد و گزینه‌هایی مانند COALESCE() را بررسی کنید.

با درک درست NULL، پرس‌وجوهای دقیق‌تری بنویسید

برای توسعه حضور آنلاین کسب‌وکار خود نیز می‌توانید اطلاعات طراحی سایت را بررسی کنید.

مشاهده وب‌سایت ←
ارسال نظر و نظرات ثبت شده
:
5 0
خيلي خوب
سایر مقالات
دستور ISNULL در اس کیو ال آموزش SQL دستور ISNULL در SQL؛ آموزش کاربرد، تفاوت‌ها و مثال‌ها یاد بگیرید مقدار ...
مقدار Null در اس کیو ال آموزش پایگاه داده مقدار Null در SQL چیست و چگونه از آن استفاده کنیم؟ تفاوت مقدار تهی با رش ...
دستور SELECT INTO در sql آموزش SQL دستور SELECT INTO در SQL؛ آموزش ساخت جدول و نسخه پشتیبان یاد بگیرید چطور داده ها ...
عملگر UNION در اسکیوال آموزش SQL دستور UNION در SQL؛ راهنمای ترکیب نتایج جداول نحوه استفاده از UNION و UNION ALL ...
دستور FULL JOIN در sql آموزش SQL دستور FULL JOIN در SQL؛ آموزش کامل با مثال ترکیب همه سطرهای دو جدول، حتی وقتی بر ...
دستور RIGHT JOIN در sql راهنمای SQL دستور RIGHT JOIN در SQL؛ آموزش، مثال و کاربردها نحوه نمایش همه رکوردهای جدول س ...
دستور LEFT JOIN در sql آموزش SQL دستور LEFT JOIN در SQL؛ آموزش کاربرد و مثال با حفظ همه رکوردهای جدول سمت چپ، داد ...
دستور INNER JOIN در sql آموزش SQL دستور INNER JOIN در SQL؛ آموزش کاربرد و مثال یاد بگیرید چگونه داده‌های مرتب ...
دستورات پیوند و Join در SQL آموزش پایگاه داده SQL JOIN چیست؟ راهنمای تفاوت انواع دستورهای پیوند آشنایی با INNER JOIN، ...
Alias در اس کیو ال آموزش SQL Alias در SQL چیست و چگونه از آن استفاده کنیم؟ راهنمای نام گذاری موقت ستون ها و ج ...
عملگر BETWEEN در شرطهای sql آموزش SQL عملگر BETWEEN در SQL؛ آموزش استفاده از بازه ها کاربرد، ساختار، مثال ها و نکات مه ...
عملگر In در شرط های sql آموزش SQL عملگر IN در SQL چیست و چگونه از آن استفاده کنیم؟ راهنمای کاربردی بررسی چند مقدار ...
علامت های شرطی در Like علامت های شرطی در LIKE و کاربرد آن ها در SQL 💡آشنایی با جستجوی الگویی هنگام جستجو در پایگ ...
عملگر Like در SQL عملگر LIKE در SQL چیست و چه کاربردی دارد؟ 🔎جست وجوی الگو در داده ها عملگر LIKE در SQL برا ...
دستور شرطی Top در SQL دستور TOP در SQL چیست و چه کاربردی دارد؟ 💡آشنایی با محدود کردن خروجی دستور TOP در SQL برای ...
دسته بندی
جستجو
⏳ در حال پردازش...
لطفا صبر کنید