在 MYSQL 中提取 python 列表值
P粉153503989
P粉153503989 2023-09-04 19:35:45
0
2
495
<p>我在 MySQL 数据库中有一个列,其中包含 <code>json</code> 格式值的 <code>python 列表</code>,如下所示:</p> <table class="s-table"> <thead> <tr> <th>列</th> </tr> </thead> <tbody> <tr> <td>[{"name":"me","color":"red"} , {"name":"you","color":"blue"}]</td> </tr> </tbody> </table> <p>我无法使用 <code>json_extract()</code> 函数,因为它的格式与 <code>json</code> 不完全相同</p> <p>我想提取新列中格式化的每个 <code>json</code> ,如下所示:</p> <table class="s-table"> <thead> <tr> <th>第一列</th> <th>第二列</th> </tr> </thead> <tbody> <tr> <td>{“名称”:“我”,“颜色”:“红色”}</td> <td>{"name":"you","color":"blue"}</td> </tr> </tbody> </table></p>
P粉153503989
P粉153503989

全部回复(2)
P粉311617763

以下查询结合字符串操作函数 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;

这里是使用 DBFIDDLE 的工作演示

这给了我预期的输出:

第一列 第二列
{“名称”:“我”,“颜色”:“红色”} {"name":"you","color":"blue"}

请将 mytable 替换为 your_actual_table_name,并将 column 替换为您的实际列名称。我用反引号包围了列,因为列是 sql 中的保留关键字。

P粉445714413

您应该能够在问题中包含的示例列上使用 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;

输出:

第一列 第二列
{“名称”:“我”,“颜色”:“红色”} {“名称”:“你”,“颜色”:“蓝色”}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板