MySQL JSON 查詢中的對象與數(shù)組技巧及查詢示例
MySQL 中 JSON 對象和 JSON 數(shù)組查詢的詳細介紹及帶有 WHERE
條件的查詢示例:
JSON 對象查詢
1. JSON_CONTAINS
用于檢查 JSON 對象是否包含指定的值或 JSON 對象。
- 語法:
JSON_CONTAINS(json_doc, val[, path])
- 示例: 假設有一個表
person
,其中有一個 JSON 列info
,存儲了個人信息。
CREATE TABLE person ( id INT PRIMARY KEY, info JSON ); INSERT INTO person (id, info) VALUES (1, '{"name": "張三", "age": 30}');
查詢 info
列中 name
為 "張三"
的記錄:
SELECT * FROM person WHERE JSON_CONTAINS(info, '"張三"', '$.name');
如果 info
列中包含 {"name": "張三"}
,則返回對應的行。
2. JSON_EXTRACT
用于從 JSON 對象中提取指定路徑的值。
- 語法:
JSON_EXTRACT(json_doc, path)
- 示例: 查詢
info
列中age
大于 25 的記錄
SELECT * FROM person WHERE JSON_EXTRACT(info, '$.age') > 25;
通過提取 age
的值并進行比較,篩選出符合條件的記錄。
3. JSON_TABLE
將 JSON 對象轉(zhuǎn)換為關(guān)系型表格,便于查詢。
語法
JSON_TABLE( json_doc, path_expression COLUMNS( column_name column_type PATH json_path [on_empty] [on_error], ... ) ) [AS] alias
示例
SELECT * FROM person, JSON_TABLE( info, '$' COLUMNS( name VARCHAR(50) PATH '$.name', age INT PATH '$.age' ) ) AS jt WHERE jt.age > 25;
將 info
列中的 JSON 數(shù)據(jù)轉(zhuǎn)換為表格格式,然后通過 WHERE
條件篩選出 age
大于 25 的記錄。
JSON 數(shù)組查詢
1. JSON_CONTAINS
同樣適用于 JSON 數(shù)組,檢查數(shù)組是否包含指定的值。
- 語法:
JSON_CONTAINS(json_array, val[, path])
- 示例: 假設有一個表
fruits
,其中有一個 JSON 列fruits_array
,存儲了水果數(shù)組
CREATE TABLE fruits ( id INT PRIMARY KEY, fruits_array JSON ); INSERT INTO fruits (id, fruits_array) VALUES (1, '["apple", "banana", "orange"]');
查詢 fruits_array
列中包含 "banana"
的記錄
SELECT * FROM fruits WHERE JSON_CONTAINS(fruits_array, '"banana"');
如果 fruits_array
中包含 "banana"
,則返回對應的行。
2. JSON_EXTRACT
從 JSON 數(shù)組中提取指定索引的值。
- 語法:
JSON_EXTRACT(json_array, path)
- 示例: 查詢
fruits_array
列中第二個水果為"banana"
的記錄
SELECT * FROM fruits WHERE JSON_EXTRACT(fruits_array, '$[1]') = '"banana"';
通過提取數(shù)組中索引為 1 的值并進行比較,篩選出符合條件的記錄。
3. JSON_TABLE
將 JSON 數(shù)組轉(zhuǎn)換為關(guān)系型表格。
語法
JSON_TABLE( json_doc, path_expression COLUMNS( column_name column_type PATH json_path [on_empty] [on_error], ... ) ) [AS] alias
示例
SELECT * FROM fruits, JSON_TABLE( fruits_array, '$[*]' COLUMNS( fruit VARCHAR(50) PATH '$' ) ) AS jt WHERE jt.fruit = 'banana';
將 fruits_array
列中的 JSON 數(shù)組轉(zhuǎn)換為表格格式,然后通過 WHERE
條件篩選出包含 "banana"
的記錄。
到此這篇關(guān)于MySQL JSON 查詢中的對象與數(shù)組技巧的文章就介紹到這了,更多相關(guān)mysql json查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql插入帶emoji表情的數(shù)據(jù)報錯問題
在處理MySQL數(shù)據(jù)庫插入表情時出現(xiàn)錯誤,主要可能是由三個因素引起的:1、數(shù)據(jù)庫版本號是否大于5.5.3;2、數(shù)據(jù)庫表及字段的字符集是否為utf8mb4;3、項目中MySQL驅(qū)動的版本是否大于5.1.13,本文詳細講解了如何針對這三個關(guān)鍵點進行排查和解決2024-11-11mysql 遞歸查找菜單節(jié)點的所有子節(jié)點的方法
這篇文章主要介紹了mysql 遞歸查找菜單節(jié)點的所有子節(jié)點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測安裝有效)
這篇文章主要介紹了mysql 8.0.22壓縮包完整安裝與配置教程圖解(親測安裝有效),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12