কম্পিউটার টিউটোরিয়াল

MySQL-এ WHERE IN ক্লজে NULL হ্যান্ডলিং

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) ব্যবহার করেও করা যায়।

  1. MySQL-এ একটি ফিল্ড সিলেক্ট করুন, যদি NULL হয় তবে অন্যটি সিলেক্ট করুন

  2. MySQL-এ টাইমস্ট্যাম্প বর্তমান ঘন্টার মধ্যে আছে কিনা তা যাচাই করা

  3. MySQL-এ WHERE ক্লজে তারিখ বিয়োগ করে রো সিলেক্ট করা

  4. MySQL-এ FIND_IN_SET ব্যবহার করে কমা-সেপারেটেড স্ট্রিং লিস্টে মান খুঁজে সিলেক্ট করা