Rumah  >  Soal Jawab  >  teks badan

Ekstrak nilai senarai python dalam MYSQL

<p>Saya mempunyai lajur dalam pangkalan data MySQL yang mengandungi <kod>senarai python</kod> dalam format <kod>json</kod> <table class="s-table"> <kepala> <tr> <th>Lajur</th> </tr> </kepala> <tbody> <tr> <td>[{"name":"me","color":"red"} , {"name":"you","color":"blue"}]</td> </tr> </tbody> </table> <p>Saya tidak boleh menggunakan fungsi <code>json_extract()</code> <p>Saya mahu mengekstrak setiap <kod>json</code> <table class="s-table"> <kepala> <tr> <th>Lajur pertama</th> <th>Lajur kedua</th> </tr> </kepala> <tbody> <tr> <td>{"Nama": "Saya", "Warna": "Merah"}</td> <td>{"name":"you","color":"blue"}</td> </tr> </tbody> </table></p>
P粉153503989P粉153503989412 hari yang lalu471

membalas semua(2)saya akan balas

  • P粉311617763

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

    Pertanyaan berikut digabungkan dengan fungsi manipulasi rentetan SUBSTRING_INDEXREPLACECONCAT akan memperoleh hasil yang diharapkan.

    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;

    Berikut ialah demo yang berfungsi menggunakan DFIDDLE

    Ini memberi saya output yang dijangkakan:

    Lajur pertama Lajur kedua
    {"nama": "saya", "warna": "merah"} {"nama":"anda","warna":"biru"}

    Sila gantikan mytable 替换为 your_actual_table_name,并将 column dengan nama lajur sebenar anda. Saya mengelilingi lajur dengan tanda belakang kerana lajur ialah kata kunci simpanan dalam sql.

    balas
    0
  • P粉445714413

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

    Anda sepatutnya boleh menggunakan JSON_EXTRACT pada lajur contoh yang disertakan dalam soalan:

    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;
    

    Keluaran:

    Lajur pertama Lajur kedua
    {"nama": "saya", "warna": "merah"} {"nama": "anda", "warna": "biru"}

    balas
    0
  • Batalbalas