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 對象轉換為關系型表格,便于查詢。
語法
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ù)轉換為表格格式,然后通過 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ù)組轉換為關系型表格。
語法
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ù)組轉換為表格格式,然后通過 WHERE 條件篩選出包含 "banana" 的記錄。
到此這篇關于MySQL JSON 查詢中的對象與數(shù)組技巧的文章就介紹到這了,更多相關mysql json查詢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mysql使用sum()函數(shù)返回null的問題詳解
MySQL的Sum()函數(shù)是用來找出所有記錄的一個字段的總和,下面這篇文章主要給大家介紹了關于Mysql使用sum()函數(shù)返回null的問題,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-01-01
Mac上實現(xiàn)修改MySQL Workbench主題配色
本文講述了Mac系統(tǒng)中Workbench主題色的調整方法,從深色主題改為淺色主題只需在命令行中執(zhí)行特定命令,反之亦然2026-04-04

