Comment obtenir les valeurs de MySQL(5.6) de la colonne si que contient le document json comme une chaîne de caractères
Comment obtenir les valeurs de MySQL(5.6) de la colonne si que contient le document JSON comme une chaîne de caractères
Par exemple, si nous avons une table - employé dans ce que nous avons trois colonnes
id, le nom et l'éducation.
et de la colonne d'éducations contient des données à partir d'un document JSON
{"ug":"bsc","pg":"mca","ssc":"10th"}
J'ai besoin de la valeur de µ g et pg à partir des enseignements de la colonne
Nous pouvons le faire à l'aide de MySQL(5.6) les requêtes?
MySQL ne sait rien de données JSON. Pour elle, c'est juste une goutte de données. Vous aurez besoin de décoder le JSON après récupération de la base de données (à l'aide de la langue que vous utilisez pour accéder à la db).
Il ressemble à MySQL 5.7 ajoute la prise en charge de JSON: dev.mysql.com/doc/refman/5.7/en/json.html#json-paths
Il ressemble à MySQL 5.7 ajoute la prise en charge de JSON: dev.mysql.com/doc/refman/5.7/en/json.html#json-paths
OriginalL'auteur Poppy | 2016-06-14
Vous devez vous connecter pour publier un commentaire.
Pour être en mesure de faire ce que vous voulez, vous avez besoin de MySQL 5.7.8+. Depuis 5.7.8 vous pouvez utiliser
JSON_EXTRACT
fonction pour extraire une valeur à partir d'une chaîne JSON:Prises de ici.
Dans MySQL 5.6, vous juste ne pouvez pas obtenir la valeur que vous voulez que MySQL ne sait rien à propos de ce qu'est un objet JSON. Afin que vos options sont les suivantes:
OriginalL'auteur Alvaro Flaño Larrondo
Dans MySQL 5.6, par défaut
JSON_EXTRACT
n'est pas disponible par défaut.Si vous avez encore besoin d'accéder à des données json dans MySQL 5.6, vous devez écrire une fonction personnalisée.
Cela aidera. J'ai créé et testé.
la vérification de vos données, je suis en utilisant cette fonction en remplacement de passé quelques mois avec pas un seul problème.
Pouvez-vous tester à l'aide de mes données?
Ce n'est pas particulièrement robuste, ou les corriger.
select json_extract_c('{"a": 1, "b": 2}', "$.a");
->2
,select json_extract_c('{"a": "1"}', "$.a")
->"1
,select json_extract_c('{"a": "a"}', "$.a")
-> chaîne vide. Les autres réponses qui fournissent des roulés à la main fonctions sont également basés sur celui-ci, de sorte ♂️réponse résolu tous les exemples ci-dessus, doit être vérifié que la réponse correcte
OriginalL'auteur Rahul Meshram
Les deux réponses ci-dessus ne fonctionne pas pour moi lorsque l'élément n'était pas mentionné dans le texte JSON. Il est mon amélioration de la fonction:
OriginalL'auteur Janis Baiza
Voici mes 3 stockées SQL fonctions que j'utilise pour le JSON de l'extraction. Ils manipulent des objets imbriqués, mais ne se soucient que le nom de la clé. Les clés doivent être des chaînes de caractères, les valeurs peuvent être des chaînes de caractères, nombres ou des valeurs booléennes. Les tableaux ne sont pas bien traités, seule la première valeur est choisie. Ils reviennent
NULL
si aucune valeur trouvée.La première,
json_extract_1
sélectionne uniquement la première valeur s'il y a plusieurs touches portant le même nom. Si vous laissez leLIMIT 1
clause, il lance des "sous-Requête retourne plus de 1 rangée" si plus de touches (mode sans échec).La deuxième,
json_extract_m
recueille toutes les valeurs avec la même clé dans une liste séparée par des virgules.La troisième,
json_extract_c
est la plus lente, mais elle traite les valeurs par des virgules aussi correctement. L'utiliser si c'est absolument nécessaire, l'e.g descriptions textuelles.Pour tous les trois, la limitation est de 999 clés. Vous pouvez accélérer si vous préparez une table pour le
numbers
- ci.OriginalL'auteur gaborsch
Rahul réponse ne fonctionne pas assez bien pour moi, donc j'ai édité, et cela a fonctionné pour moi:
OriginalL'auteur user3631341