Requête avec du JSON syntaxe MySQL

Fermé
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 - Modifié le 13 janv. 2022 à 17:18
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 - 14 janv. 2022 à 15:21
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 janv. 2022 à 23:54
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 samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
14 janv. 2022 à 15:21
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 samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
Modifié le 14 janv. 2022 à 14:20
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