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

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

MySQL-এ কমা-সেপারেটেড স্ট্রিং কলামে নির্দিষ্ট মান আছে কিনা চেক করতে FIND_IN_SET() ফাংশন ব্যবহার করা সবচেয়ে উপযুক্ত।

উদাহরণ

টেবিল তৈরি:

CREATE TABLE demo81 (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(200)
);

INSERT INTO demo81(username) VALUES 
('John,Chris,David'), ('Mike,Sam'), ('Chris,Bob,Sam'), ('Mike,John,Chris');

টেবিলের ডেটা:

+----+------------------+
| id | username         |
+----+------------------+
| 1  | John,Chris,David |
| 2  | Mike,Sam         |
| 3  | Chris,Bob,Sam    |
| 4  | Mike,John,Chris  |
+----+------------------+

কোয়েরি

'Chris' মান থাকা রোগুলো সিলেক্ট:

SELECT * FROM demo81 WHERE FIND_IN_SET('Chris', username) > 0;

আউটপুট

+----+------------------+
| id | username         |
+----+------------------+
| 1  | John,Chris,David |
| 3  | Chris,Bob,Sam    |
| 4  | Mike,John,Chris  |
+----+------------------+

ব্যাখ্যা:

  • FIND_IN_SET('Chris', username) - username স্ট্রিংয়ে 'Chris' খুঁজে পозиশন রিটার্ন করে (১, ২, ৩...), না পেলে ০।
  • > 0 মানে পাওয়া গেছে।
  • রো ১: 'Chris' ২য় পজিশনে, রো ৩: ১ম পজিশনে, রো ৪: ৩য় পজিশনে।
  • রো ২: 'Chris' নেই -> ০ -> বাদ পড়েছে।

সুবিধা: LIKE '%Chris%'-এর চেয়ে সঠিক (পার্শিয়াল ম্যাচ এড়ায়, যেমন 'Christian' ম্যাচ করবে না)। REGEXP '[[:<:]]Chris[[:>:]]' (ওয়ার্ড বাউন্ডারি) দিয়েও করা যায়।

  1. MySQL-এ WHERE ক্লজে একাধিক শর্ত দিয়ে আপডেট করা

  2. MySQL에서 ORDER BY RAND()와 LIMIT으로 랜덤 2개 행 선택하기

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

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