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

MySQL-এ JSON ডেটা টাইপ এবং JSON_CONTAINS() ব্যবহার করে JSON কোয়েরি করা

MySQL 5.7+ এ নেটিভ JSON ডেটা টাইপ এবং JSON_CONTAINS(), JSON_EXTRACT() ইত্যাদি ফাংশন ব্যবহার করে JSON ডেটা কোয়েরি করা যায়।

টেবিল তৈরি (JSON কলাম)

mysql> CREATE TABLE DemoTable (
    -> StudentName JSON
    -> );
Query OK, 0 rows affected (0.74 sec)

JSON অ্যারে ইনসার্ট

mysql> INSERT INTO DemoTable VALUES('["John", "Chris", "Robert", "David", "Sam"]');

রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable;

আউটপুট

+---------------------------------------------+
| StudentName                                 |
+---------------------------------------------+
| ["John", "Chris", "Robert", "David", "Sam"] |
+---------------------------------------------+
1 row in set (0.00 sec)

JSON_CONTAINS() ব্যবহার করে 'Chris' আছে কিনা চেক

mysql> SELECT * FROM DemoTable WHERE JSON_CONTAINS(StudentName, '["Chris"]');

আউটপুট

+---------------------------------------------+
| StudentName                                 |
+---------------------------------------------+
| ["John", "Chris", "Robert", "David", "Sam"] |
+---------------------------------------------+
1 row in set (0.04 sec)

ব্যাখ্যা: JSON_CONTAINS(target, candidate) — target JSON ডকুমেন্টে candidate JSON মানটি নেস্টেডভাবে আছে কিনা চেক করে। ['Chris'] একটি JSON অ্যারে।

অন্যান্য উপযোগী JSON ফাংশন:

  • JSON_EXTRACT(col, '$.path') — পথ অনুযায়ী মান বের করা (-> অপারেটরও ব্যবহার করা যায়)।
  • JSON_UNQUOTE(JSON_EXTRACT(...)) বা col->>'$.path' — কোটেশন ছাড়া মান।
  • JSON_ARRAY_APPEND(), JSON_SET(), JSON_REMOVE() — মডিফিকেশন।
  • JSON_TABLE() (MySQL 8.0+) — JSON কে রিলেশনাল টেবিল আকারে কোয়েরি।

ইনডেক্সিং: JSON কলামে সরাসরি ইনডেক্স দেওয়া যায় না। VIRTUAL GENERATED COLUMN তৈরি করে সেটিতে ইনডেক্স দিন।

  1. MySQL-এ % ওয়াইল্ডকার্ড সঠিকভাবে ব্যবহার করা (LIKE অপারেটর)

  2. MySQL-এ ORDER BY LIKE প্যাটার্ন অনুযায়ী সর্ট করা (CASE WHEN)

  3. MySQL-এ প্রতিটি সারোতে মান যোগ করা (UPDATE দিয়ে ইন্টিজার এবং ডেট কলাম আপডেট)

  4. MySQL-এ SOUNDEX() ফাংশন ব্যবহার করে ধ্বনিসাম্য খুঁজে বের করা