Rumah > Soal Jawab > teks badan
P粉3116177632023-09-05 18:49:35
Pertanyaan berikut digabungkan dengan fungsi manipulasi rentetan SUBSTRING_INDEX
、REPLACE
和 CONCAT
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粉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"} |