Ekstrak nilai senarai python dalam MYSQL
P粉153503989
P粉153503989 2023-09-04 19:35:45
0
2
500
<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粉153503989
P粉153503989

membalas semua(2)
P粉311617763

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.

P粉445714413

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"}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan