欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql的json串解析成列

錢多多2年前11瀏覽0評論

MySQL是一個關系型數據庫管理系統,但也支持JSON格式的數據存儲和處理。而在處理JSON格式的數據時,解析JSON串成為列數據是一個常見的需求。本文將介紹如何使用MySQL的函數和語法來解析JSON串成為列數據。

1. 使用JSON_EXTRACT函數解析JSON串為列數據
JSON_EXTRACT是MySQL提供的函數,可以將JSON格式的數據轉換成相應的列數據。 它接受兩個參數,第一個參數是原始JSON串,第二個參數是需要提取的鍵名。 例如:我們有以下JSON串

{
"name": "Tom",
"age": 30,
"hobby": ["reading", "traveling", "cooking"]
}

可以使用JSON_EXTRACT函數提取hobby鍵所對應的數據,如下所示

SELECT JSON_EXTRACT('{
"name": "Tom",
"age": 30,
"hobby": ["reading", "traveling", "cooking"]
}', '$.hobby');

執行結果:

["reading", "traveling", "cooking"]

我們可以看到,JSON_EXTRACT函數成功將JSON串中的數據提取出來,并返回一個數組。當然,我們也可以將數組的內容拆分成不同行

SELECT JSON_EXTRACT('{
"name": "Tom",
"age": 30,
"hobby": ["reading", "traveling", "cooking"]
}', '$.hobby[0]') AS hobby1,
JSON_EXTRACT('{
"name": "Tom",
"age": 30,
"hobby": ["reading", "traveling", "cooking"]
}', '$.hobby[1]') AS hobby2,
JSON_EXTRACT('{
"name": "Tom",
"age": 30,
"hobby": ["reading", "traveling", "cooking"]
}', '$.hobby[2]') AS hobby3;

執行結果:

hobby1 | hobby2 | hobby3
------------------------
reading|traveling| cooking

2. 使用JSON_TABLE函數解析JSON串為列數據
JSON_TABLE是MySQL 8.0版本開始支持的函數,它可以將JSON格式的數據解析成表格形式的數據。 它接受三個參數,第一個參數是原始JSON串,第二個參數是JSON路徑,第三個參數是列定義。 例如:我們有以下JSON串

{
"code": 200,
"message": "success",
"data": [
{
"name": "Tom",
"age": 30,
"hobby": ["reading", "traveling", "cooking"]
},
{
"name": "Jerry",
"age": 25,
"hobby": ["swimming", "drawing", "playing guitar"]
}
]
}

可以使用JSON_TABLE函數將data數組中的每個元素轉換為單獨的行,例如:

SELECT name, age, hobby
FROM JSON_TABLE('{
"code": 200,
"message": "success",
"data": [
{
"name": "Tom",
"age": 30,
"hobby": ["reading", "traveling", "cooking"]
},
{
"name": "Jerry",
"age": 25,
"hobby": ["swimming", "drawing", "playing guitar"]
}
]
}', '$.data[*]' COLUMNS (
name VARCHAR(50) PATH '$.name',
age INT PATH '$.age',
hobby VARCHAR(100) PATH '$.hobby'
)) AS t;

執行結果:

name  | age | hobby
-------------------
Tom   |  30 | ["reading", "traveling", "cooking"]
Jerry |  25 | ["swimming", "drawing", "playing guitar"]

我們可以看到,JSON_TABLE函數成功將JSON串解析成為了表格形式的數據,并返回了包含每個元素的name,age和hobby的信息。