توضیح دستورهای Null در SQL

sql null functions explained
20 آبان 1403

در دنیای پایگاه‌های داده، مدیریت مقدارهای تهی یا Null یکی از موضوعات بسیار مهم است که نیاز به درک درست و کاربردی آن داریم. مقدار Null در SQL به معنی نبودن داده است و با مقادیری مانند صفر یا رشته خالی فرق دارد. دانستن چگونگی کار با Null می‌تواند به بهبود دقت کوئری‌های پایگاه‌داده و کنترل بهتر داده‌ها کمک کند.

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

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

علاوه بر این، گاهی اوقات لازم است یک شرطی مانند CASE WHEN را برای کار با مقادیر Null بکار بگیریم. این کار به ما امکان می‌دهد تا برای هر مقدار تهی یک اقدام خاصی انجام دهیم، مثلاً مقدار دیگری قرار دهیم یا پیامی نمایش دهیم. این موضوع در گزارش‌گیری و تحلیل داده‌ها بسیار مفید است.

مهم است که توجه داشته باشیم Null در منطق سه‌گانه SQL شرکت می‌کند. این یعنی که Null نه True است و نه False، بلکه یک حالت سوم به نام Unknown دارد. تمامی عملیات و مقایسه‌ها باید این نکته را در نظر داشته باشند، وگرنه نتایج می‌تواند نادرست باشد.

در نهایت، کار با مقدارهای Null زمانی که باید از JOINها و GROUP BYها استفاده کرد، بسیار مهم می‌شود. اینجا همان جاییست که فهم دقیق رفتار Null می‌تواند به جلوگیری از اشتباهات در نتایج کوئری‌ها کمک کند. در زیر چند مثال عملی به کار با Null در SQL آورده شده است.

SELECT column_name
FROM table_name
WHERE column_name IS NULL;

SELECT ISNULL(column_name, 'Default Value')
FROM table_name;

SELECT COALESCE(column_name1, column_name2, 'Default Value')
FROM table_name;

SELECT CASE
WHEN column_name IS NULL THEN 'Value is Null'
ELSE column_name
END
FROM table_name;

بررسی مثال‌ها

SELECT column_name: این دستور برای انتخاب مقادیر از ستونی خاص استفاده می‌شود.
FROM table_name: در اینجا، جدول از جایی که داده‌ها باید انتخاب شوند، مشخص می‌شود.
WHERE column_name IS NULL: این بخش کوئری بررسی می‌کند که آیا مقدار در ستون مورد نظر تهی است یا خیر.
ISNULL(column_name, 'Default Value'): این تابع بررسی می‌کند که اگر مقدار ستون تهی باشد، به جای آن مقدار 'Default Value' نمایش داده شود.
COALESCE(column_name1, column_name2, 'Default Value'): این تابع مقدار اولین ستون غیر تهی را برمی‌گرداند و اگر تمامی مقادیر تهی باشند، مقدار پیش‌فرض داده شده را برمی‌گرداند.
CASE WHEN column_name IS NULL THEN 'Value is Null': با استفاده از این شرط اگر مقدار ستون تهی باشد، متن 'Value is Null' برگردانده می‌شود.
ELSE column_name: در غیر اینصورت، مقدار اصلی ستون برگردانده می‌شود.

سوالات متداول

؟

چطور می‌توانم بفهمم که یک مقدار در SQL تهی است؟

؟

تابع ISNULL برای چه مواقعی به کار می‌رود؟

؟

تفاوت ISNULL و COALESCE چیست؟