بررسی مقادیر NULL در SQL: راهنمای کامل IS NULL و IS NOT NULL
در SQL، مقدار NULL نشاندهنده یک مقدار ناشناخته است. این با صفر (0) یا یک رشته خالی (”) برابر نیست. بلکه، به معنای عدم وجود هرگونه مقدار دادهای است. درک NULL هنگام کوئری گرفتن از پایگاه داده بسیار حیاتی است، زیرا در صورت عدم مدیریت صحیح، میتواند نتایج کوئری را به طور قابل توجهی تحت تأثیر قرار دهد.
عملگر IS NULL در SQL برای بررسی مقادیر NULL در یک ستون استفاده میشود. از آنجا که NULL یک مقدار ناشناخته است، نمیتوان آن را مستقیماً با استفاده از عملگرهای مقایسهای استاندارد مانند `=` (برابر)، “ (بزرگتر) مقایسه کرد. در عوض، شما باید از عملگر IS NULL استفاده کنید.
بیایید با یک مثال عملی شروع کنیم. ابتدا یک جدول نمونه به نام Employees
ایجاد کرده و چند رکورد به آن اضافه میکنیم که شامل مقادیر NULL نیز میشوند:
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Email VARCHAR(100),
PhoneNumber VARCHAR(20)
);
INSERT INTO Employees (EmployeeID, FirstName, LastName, Email, PhoneNumber) VALUES
(1, 'John', 'Doe', 'john.doe@example.com', '123-456-7890'),
(2, 'Jane', 'Smith', 'jane.smith@example.com', NULL),
(3, 'Peter', 'Jones', NULL, '555-123-4567'),
(4, 'Mary', 'Brown', 'mary.brown@example.com', '333-222-1111'),
(5, 'David', 'Lee', NULL, NULL);
برای بازیابی تمامی کارمندانی که آدرس ایمیل آنها NULL است، از کوئری زیر استفاده میکنیم:
SELECT EmployeeID, FirstName, LastName, Email, PhoneNumber
FROM Employees
WHERE Email IS NULL;
این کوئری رکوردهایی را بازمیگرداند که فیلد Email
در آنها مقدار ناشناخته (NULL) دارد.
میتوانید IS NULL را با سایر شرایط در بند WHERE ترکیب کنید. به عنوان مثال، برای یافتن کارمندانی که آدرس ایمیل آنها NULL است اما شماره تلفن دارند، از کوئری زیر استفاده کنید:
SELECT EmployeeID, FirstName, LastName, Email, PhoneNumber
FROM Employees
WHERE Email IS NULL
AND PhoneNumber IS NOT NULL;
این کوئری کارمندانی را پیدا میکند که ایمیل آنها NULL است و در عین حال، یک شماره تلفن مشخص دارند.
عملگر IS NOT NULL در SQL برای بررسی مقادیر غیر NULL در یک ستون استفاده میشود. این عملگر ردیفهایی را برمیگرداند که ستون مشخص شده حاوی یک مقدار واقعی است (یعنی NULL نیست).
برای بازیابی تمامی کارمندانی که شماره تلفن آنها NULL نیست (یعنی دارای یک مقدار مشخص هستند)، کوئری زیر را اجرا میکنیم:
SELECT EmployeeID, FirstName, LastName, Email, PhoneNumber
FROM Employees
WHERE PhoneNumber IS NOT NULL;
این کوئری تمامی رکوردهایی را بازمیگرداند که فیلد PhoneNumber
آنها مقدار NULL ندارد و دارای یک مقدار مشخص است.
مانند IS NULL، میتوانید IS NOT NULL را نیز با سایر شرایط ترکیب کنید. برای یافتن کارمندانی که آدرس ایمیل دارند اما شماره تلفن آنها NULL است، از کوئری زیر استفاده کنید:
SELECT EmployeeID, FirstName, LastName, Email, PhoneNumber
FROM Employees
WHERE Email IS NOT NULL
AND PhoneNumber IS NULL;
این کوئری کارمندانی را بازمیگرداند که دارای ایمیل معتبر هستند ولی فاقد شماره تلفن میباشند.
یک اشتباه رایج که مبتدیان مرتکب میشوند، تلاش برای مقایسه مقادیر NULL با استفاده از عملگر `=` است. به عنوان مثال، عبارت WHERE Email = NULL
نتایج مورد انتظار را برنمیگرداند.
دلیل این امر این است که `=` یک عملگر مقایسهای است که انتظار دو مقدار مشخص برای مقایسه را دارد. از آنجا که NULL یک مقدار ناشناخته را نشان میدهد، نمیتواند با هیچ چیز دیگری برابر باشد، حتی با یک NULL دیگر. بنابراین، همیشه هنگام کار با مقادیر NULL، از IS NULL یا IS NOT NULL استفاده کنید.