MySQL 5.7+ hỗ trợ kiểu dữ liệu JSON và hàm JSON_EXTRACT() (hoặc toán tử ->>) để truy xuất giá trị trong cột JSON.
Tạo bảng cột JSON
mysql> CREATE TABLE DemoTable (Data JSON); Query OK, 0 rows affected (0.63 sec)
mysql> INSERT INTO DemoTable VALUES('{"Name": "John", "CountryName": "US"}'), ('{"Name": "Chris", "CountryName": "UK"}');
Query OK, 2 rows affected (0.33 sec)
Truy vấn lọc theo CountryName = 'US'
mysql> SELECT * FROM DemoTable WHERE JSON_EXTRACT(Data, '$.CountryName') LIKE '%US%';
Kết quả:
+---------------------------------------+
| Data |
+---------------------------------------+
| {"Name": "John", "CountryName": "US"} |
+---------------------------------------+
1 row in set (0.00 sec)
Cú pháp hiện đại (MySQL 5.7+):
JSON_EXTRACT(col, '$.path'): trả về giá trị JSON (có dấu ngoặc kép cho string)col->>'$.path': trả về text thuần (unquoted), tiện cho so sánh- Ví dụ:
WHERE Data->>'$.CountryName' = 'US'
Index JSON: Tạo VIRTUAL COLUMN trích xuất giá trị, sau đó index cột ảo đó.