我在 MySQL 数据库中有一个列,其中包含 json 格式值的 python 列表,如下所示:
| 列 |
|---|
| [{"name":"me","color":"red"} , {"name":"you","color":"blue"}] |
我无法使用 json_extract() 函数,因为它的格式与 json 不完全相同
我想提取新列中格式化的每个 json ,如下所示:
| 第一列 | 第二列 |
|---|---|
| {“名称”:“我”,“颜色”:“红色”} | {"name":"you","color":"blue"} |
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
以下查询结合字符串操作函数
SUBSTRING_INDEX、REPLACE和CONCAT将获得预期结果。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;这里是使用 DBFIDDLE 的工作演示
这给了我预期的输出:
请将
mytable替换为 your_actual_table_name,并将column替换为您的实际列名称。我用反引号包围了列,因为列是 sql 中的保留关键字。您应该能够在问题中包含的示例列上使用 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;输出: