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

MySQL-এ SET কলামে +0 অপারেটর: সেট মানকে ইন্টিজারে রূপান্তর

MySQL-এ SET ডেটা টাইপের কলামে +0 যোগ করলে সেট মানটি এর বিটম্যাস্ক (bitmask) ইন্টিজার রূপে রিটার্ন হয়। প্রতিটি সেট সদস্যের একটি বিট পজিশন থাকে।

উদাহরণ

CREATE TABLE set_zero_demo (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    technical_skills SET('C', 'Spring Framework/Hibernate', 'Python', 'Django Framework', 'Core Java') NOT NULL
);

INSERT INTO set_zero_demo (technical_skills) VALUES 
('C,Spring Framework/Hibernate,Python,Django Framework,Core Java');

সেট মান +0 সহ

SELECT technical_skills, technical_skills + 0 AS bitmask_value
FROM set_zero_demo;

ফলাফল

+-----------------------------------------------------------------+---------------+
| technical_skills                                                | bitmask_value |
+-----------------------------------------------------------------+---------------+
| C,Spring Framework/Hibernate,Python,Django Framework,Core Java  | 31            |
+-----------------------------------------------------------------+---------------+

কেন ৩১? — বিট গণনা

৫টি সদস্য থাকায় বিট পজিশন ০ থেকে ৪:

2^0 + 2^1 + 2^2 + 2^3 + 2^4
= 1 + 2 + 4 + 8 + 16
= 31
সদস্যপজিশনবিট মানদশমিক
C02⁰1
Spring Framework/Hibernate12¹2
Python22²4
Django Framework32³8
Core Java42⁴16

ব্যবহারিক অ্যাপ্লিকেশন

সেট মেম্বারশিপ চেক (বিটওয়াইজ AND)

-- 'Python' 있는지 চেক (পজিশন ২ = 2^2 = 4)
SELECT * FROM set_zero_demo WHERE technical_skills & 4;

সেট মান ইন্টিজার হিসেবে স্টোর/কম্পেয়ার

-- ইন্টিজার ১৯ = 1+2+16 = C, Spring, Core Java
INSERT INTO set_zero_demo (technical_skills) VALUES (19);

দ্রষ্টব্য

  • SET টাইপ সর্বোচ্চ ৬৪ সদস্য ধারণ করতে পারে (BIGINT বিটম্যাস্ক)
  • +0 নümerিক কনটেক্সটে টাইপ কাস্টিং বাধ্য করে
  • স্টোরেজ: ১-৮ সদস্য = ১ বাইট, ৯-১৬ = ২ বাইট, ..., ৫৭-৬৪ = ৮ বাইট
  1. MySQL-এ /* ... */ মন্তব্য (Comment) সিনট্যাক্স

  2. MySQL কোয়েরিতে স্ল্যাশ (/) এর অর্থ — ভাগ করা

  3. MySQL SELECT (COLNAME) তে প্যারেনথেসিসের অর্থ কী?

  4. MySQL-এ SELECT @@identity কী কাজ করে?