Maison > Questions et réponses > le corps du texte
P粉3116177632023-09-05 18:49:35
La requête suivante combinée aux fonctions de manipulation de chaînes SUBSTRING_INDEX
、REPLACE
和 CONCAT
obtiendra les résultats attendus.
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;
Voici une démo fonctionnelle
utilisant DBFIDDLECela me donne le résultat attendu :
Première chronique | Deuxième colonne |
---|---|
{"nom": "i", "color": "rouge"} | {"name": "vous", "color": "bleu"} |
Veuillez remplacer mytable
替换为 your_actual_table_name,并将 column
par le nom réel de votre colonne. J'ai entouré les colonnes de backticks car column est un mot-clé réservé en SQL.
P粉4457144132023-09-05 17:11:12
Vous devriez pouvoir utiliser JSON_EXTRACT sur les exemples de colonnes inclus dans la question :
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;
Sortie :
Première chronique | Deuxième colonne |
---|---|
{"nom": "moi", "couleur": "rouge"} | {"nom": "vous", "couleur": "bleu"} |