json 在MYSQL中提取python列表值

n3schb8v  于 2023-03-20  发布在  Mysql
关注(0)|答案(2)|浏览(113)

我在MySQL数据库中有一个列,其中包含json的值python list如下:
| 色谱柱|
| - ------|
| [{“姓名”:“我”,“颜色”:“红色”},{“姓名”:“你”,“颜色”:“蓝色”}]|
我无法使用json_extract()函数,因为它的格式与json不完全相同
我想提取每个json在一个新的列如下:
| 第一列(_L)|第二列|
| - ------|- ------|
| {“姓名”:“我”,“颜色”:“红色”}|{“姓名”:“您”,“颜色”:“蓝色”}|

lyr7nygr

lyr7nygr1#

您应该能够对问题中包含的示例列使用JSON_EXTRACT:

SET @column = '[{"name":"me","color":"red"} , {"name":"you","color":"blue"}]';

SELECT
    JSON_EXTRACT(@column, '$[0]') AS First_column,
    JSON_EXTRACT(@column, '$[1]') AS Second_column;

输出:
| 第一列(_L)|第二列|
| - ------|- ------|
| {“姓名”:“我”,“颜色”:“红色”}|{“姓名”:“您”,“颜色”:“蓝色”}|

wa7juj8i

wa7juj8i2#

以下查询结合了字符串操作函数SUBSTRING_INDEXREPLACECONCAT,将获得预期结果。

SELECT 
  CONCAT('{', REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(`column`, '}', 1), '{', -1), '\\"', '"'), '}') AS First_column,
  CONCAT('{', REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(`column`, '}', 2), '{', -1), '\\"', '"'), '}') AS Second_column
FROM mytable;

这里是a working demo using DBFIDDLE
这将给出如下预期输出:
| 第一列(_L)|第二列|
| - ------|- ------|
| {“姓名”:“我”,“颜色”:“红色”}|{“姓名”:“您”,“颜色”:“蓝色”}|
请将mytable替换为your_actual_table_name,将column替换为实际列名。我用反号将列括起来,因为列是sql中的保留关键字。

相关问题