在MySQL中,我們可以使用如下代碼創建一個表,表中有一個json類型的字段:
CREATE TABLE `students` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `info` JSON NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
以下代碼向表中添加了一條數據:
INSERT INTO students (name, info) VALUES ('小明', '{"age": 20, "score": {"math": 90, "english": 80}}');
現在,我們想要查詢這條數據中的某個字段,該怎么辦呢?使用MySQL的內置函數JSON_EXTRACT:
SELECT JSON_EXTRACT(info, '$.age') as age FROM students WHERE name = '小明';
以上代碼會返回查詢結果,其中age字段的值為20。JSON_EXTRACT函數傳入兩個參數,第一個參數是要查詢的json字段,即info,第二個參數是要獲取的json對象的路徑,即$.age。
除了JSON_EXTRACT,MySQL還提供了很多用于查詢json字段的函數,例如JSON_UNQUOTE、JSON_CONTAINS、JSON_KEYS等等。一些常用函數的使用方法如下:
-- 查詢info字段所包含的所有key SELECT JSON_KEYS(info) as keys FROM students WHERE name = '小明'; -- 查詢info字段是否包含age這個key SELECT JSON_CONTAINS(info, '{"age": 20}') as is_contain FROM students WHERE name = '小明'; -- 將info中的字符串解析為json對象 SELECT JSON_QUOTE(info->'$.score.math') as score_math FROM students WHERE name = '小明';
使用上述函數,我們可以方便地查詢和操作MySQL中的json字段。