MySQL-এ IN অপারেটর দিয়ে NULL ভ্যালু চেক করলে সেটি কাজ করে না (NULL == NULL হলো UNKNOWN)। তাই IS NULL আলাদা ব্যবহার করতে হয়।
সিনট্যাক্স
SELECT col1, col2 FROM yourTableName WHERE yourValue IN (col1, col2) OR col1 IS NULL;
উদাহরণ
টেবিল তৈরি:
CREATE TABLE demo60 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(20),
last_name VARCHAR(20)
);
INSERT INTO demo60(first_name, last_name) VALUES
('John', 'Smith'), ('John', 'Doe'), (NULL, 'Brown'), ('David', 'Miller'), ('David', 'Smith'), ('Chris', 'Brown');
টেবিলের ডেটা:
+----+------------+-----------+ | id | first_name | last_name | +----+------------+-----------+ | 1 | John | Smith | | 2 | John | Doe | | 3 | NULL | Brown | | 4 | David | Miller | | 5 | David | Smith | | 6 | Chris | Brown | +----+------------+-----------+
কোয়েরি
first_name বা last_name-এ 'John' থাকা বা first_name NULL হলে সিলেক্ট:
SELECT id, first_name, last_name FROM demo60 WHERE 'John' IN (first_name, last_name) OR first_name IS NULL;
আউটপুট
+----+------------+-----------+ | id | first_name | last_name | +----+------------+-----------+ | 1 | John | Smith | | 2 | John | Doe | | 3 | NULL | Brown | +----+------------+-----------+
ব্যাখ্যা:
'John' IN (first_name, last_name)-> ১ ও ২ নম্বর রো ম্যাচ করে।first_name IS NULL-> ৩ নম্বর রো ম্যাচ করে।INক্লজে NULL থাকলে সেটি TRUE রিটার্ন করে না (UNKNOWN রিটার্ন করে)। তাইOR first_name IS NULLআলাদা যোগ করা হয়েছে।
টিপ: COALESCE(first_name, '') = 'John' বা first_name <=> 'John' (NULL-safe equal) ব্যবহার করেও করা যায়।