SQL Error (1064)
Résolu
Lemjid
Messages postés
71
Date d'inscription
Statut
Membre
Dernière intervention
-
Lemjid Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
Lemjid Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
3 réponses
Ah ben si tu ne nous donnes pas toutes les infos dès le départ......... :-(
Donc, à part faire une fonction personnalisée, le format JSON n'est en effet pas dispo avant la version 5.7
Je t'invite à regarder cette discussion :
https://stackoverflow.com/questions/37816269/how-to-get-values-from-mysql5-6-column-if-that-contains-json-document-as-strin
Donc, à part faire une fonction personnalisée, le format JSON n'est en effet pas dispo avant la version 5.7
Je t'invite à regarder cette discussion :
https://stackoverflow.com/questions/37816269/how-to-get-values-from-mysql5-6-column-if-that-contains-json-document-as-strin
#jsonanalytic function DELIMITER $$ DROP FUNCTION IF EXISTS `json_extract_c`$$ CREATE FUNCTION `json_extract_c`( details TEXT, required_field VARCHAR (255) ) RETURNS TEXT CHARSET latin1 BEGIN SET details = SUBSTRING_INDEX(details, "{", -1); SET details = SUBSTRING_INDEX(details, "}", 1); RETURN TRIM( BOTH '"' FROM SUBSTRING_INDEX( SUBSTRING_INDEX( SUBSTRING_INDEX( details, CONCAT( '"', SUBSTRING_INDEX(required_field,'$.', -1), '":' ), -1 ), ',"', 1 ), ':', -1 ) ) ; END$$ DELIMITER ;
Oui c'est ca , j'ai le résultat avec : SELECT json_extract_c (params,"$.io240") FROM gs_object;
J'utilise PHP donc pour faire insert from select j'ai fait comme ca :
$sql = "INSERT INTO gs_dat (io1)
SELECT
(json_extract_c (gs.params,"$.io1")) io1
FROM gs_objects gs;
qui retourne : ( ! ) Parse error: syntax error, unexpected '$' in
J'utilise PHP donc pour faire insert from select j'ai fait comme ca :
$sql = "INSERT INTO gs_dat (io1)
SELECT
(json_extract_c (gs.params,"$.io1")) io1
FROM gs_objects gs;
qui retourne : ( ! ) Parse error: syntax error, unexpected '$' in
Donc, dans la bdd, tu as un champ de type varchar (le champs Params ) qui contient une string qui représente un JSON.
As tu essayé de faire un CAST de la colonne dans ta requête et utiliser ou sous requête ?
Un truc du genre
Voir la doc pour manipuler les JSON si besoin
https://dev.mysql.com/doc/refman/8.0/en/json.html
/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '>'$.io240'
FROM (SELECT CAST(params as JS' at line 1 */