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 তৈরি করে সেটিতে ইনডেক্স দিন।