Requête avec du JSON syntaxe MySQL

rdbn Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   -  
rdbn Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai une table user avec plusieurs rôles attribué pour chaque utilisateur, roles = ["ROLE_ADMIN"] , ["ROLE_USER"] , ["ROLE_ANON"].

roles est de type JSON.

mntn je veux récupérer tout mes utilisateurs avec le rôle user.

J'ai essayé plusieurs écriture mais toujours un retour d'un résultat vide.

SELECT roles FROM `user` 
  WHERE roles = `["ROLE_ORGANISATEUR"]`
        # 
        WHERE JSON_EXTRACT(roles, '$.roles') = 'ROLE_ORGANISATEUR'
        # 
        WHERE JSON_EXTRACT(roles, '$.roles') = 'ROLE_ORGANISATEUR'
         # 
        WHERE roles = JSON_EXTRACT(roles, '$.ROLE_ORGANISATEUR')


Merci

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Pourquoi JSON_EXTRACT ?
Moi je regarderai plutôt du côté de JSON_SEARCH
https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html
0
rdbn Messages postés 95 Date d'inscription   Statut Membre Dernière intervention  
 
A savoir : j'avais réussi à trouver une solution et qui fonctionne en utilisant tout simplement un LIKE..
Mais je me suis renseigné pour voir s'il existé pas une solution plus adapté en l' occurrence je suis tombé sur le JSON_EXTRACT....
0
rdbn Messages postés 95 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

De base, je n'ai aucune idée de comment l'écrire.. j'ai donc fais des recherches, et dans toutes ces recherches, il m'a semblé peut être à tord, que JSON_EXTRACT me renverrait le JSON sélectionné avec pour json_doc la table et le path la valeur qu'on veux renvoyé..

En tout cas j'ai suivi ton lien, et j'ai essayé avec JSON_SEARCH et j'ai toujours un résultat vide.
Je pense écrire mal la requête...

SELECT roles FROM `user` 
  WHERE roles = JSON_SEARCH(@roles, 'all', '%ORGANISATEUR%')
-1