Extrahieren Sie Python-Listenwerte in MYSQL
P粉153503989
P粉153503989 2023-09-04 19:35:45
0
2
448

Ich habe eine Spalte in einer MySQL-Datenbank, die eine Python-Liste mit Werten im json enthält:

Spalte
[{"name":"ich", "farbe": "rot"}, {"name": "du", "farbe": "blau"}]

Ich kann die Funktion json_extract() nicht verwenden, da ihr Format nicht genau mit dem von json

übereinstimmt.

Ich möchte jeden json in einer neuen Spalte wie folgt extrahieren:

Erste Spalte Zweite Spalte
{"Name": "I", "Farbe": "Rot"} {"name":"du", "Farbe": "blau"}

P粉153503989
P粉153503989

Antworte allen (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;

    输出:

    第一列 第二列
    {“名称”:“我”,“颜色”:“红色”} {“名称”:“你”,“颜色”:“蓝色”}
      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!