suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Extrahieren Sie Python-Listenwerte in MYSQL

<p>Ich habe eine Spalte in einer MySQL-Datenbank, die eine <code>Python-Liste</code> mit Werten im <code>json</code> enthält: </p> <table class="s-table"> <thead> <tr> <th>Spalte</th> </tr> </thead> <tbody> <tr> <td>[{"name":"ich", "farbe": "rot"}, {"name": "du", "farbe": "blau"}]</td> </tr> </tbody> </table> <p>Ich kann die Funktion <code>json_extract()</code> nicht verwenden, da ihr Format nicht genau mit dem von <code>json</code></p> übereinstimmt. <p>Ich möchte jeden <code>json</code> in einer neuen Spalte wie folgt extrahieren: </p> <table class="s-table"> <thead> <tr> <th>Erste Spalte</th> <th>Zweite Spalte</th> </tr> </thead> <tbody> <tr> <td>{"Name": "I", "Farbe": "Rot"}</td> <td>{"name":"du", "Farbe": "blau"}</td> </tr> </tbody> </table></p>
P粉153503989P粉153503989452 Tage vor497

Antworte allen(2)Ich werde antworten

  • P粉311617763

    P粉3116177632023-09-05 18:49:35

    以下查询结合字符串操作函数 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 中的保留关键字。

    Antwort
    0
  • P粉445714413

    P粉4457144132023-09-05 17:11:12

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

    输出:

    第一列 第二列
    {“名称”:“我”,“颜色”:“红色”} {“名称”:“你”,“颜色”:“蓝色”}

    Antwort
    0
  • StornierenAntwort