Requete "in"

Résolu
kyuubi6 -  
 kyuubi6 -
Bonjour,

J'aimerais sélectionner toutes les lignes dont le champ "question4" contient le chiffre 14, il faut savoir que ce champs peut contenir plusieurs chiffre séparé d'un ";".
J'utilise la requete "select * from enquete where question4 in (14)", le problème est que il me renvoie les ligne contenant 14, les lignes du style "14;20;25" (génial) mais si j'ai "25;14" donc le 14 dans une autre position qu'en premier lieu il ne me l'a renvoie pas.
Comment puis je faire?
merci

4 réponses

Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   70
 
Je dirais :
select * from enquete where (question4 like "14;%") or (question4 like "%;14;%") or (question4 like "%;14") or (question4 = "14") 

Le IN marcherait peut être si le séparateur était une "," et pas un ";", mais je vais m'amuser à tester :p
1
kyuubi6
 
je suis avec mysql sur wamp (phpmyadmin), oui mais comme tu dis si je fais un like "%14%" il va me prendre les 114
0
Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   70
 
Sous Mysql tu peut tenter celle-là : select * from enquete where REGEX '(^|;)14(;|$)'
Sinon celle que j'ai mis plus haut devrait marcher même si elle est plus chiante à taper.
0
kyuubi6
 
je viens de la tenter dans mon phpmyadmin et il me dit que j'ai une erreur
"#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 ''(^|;)14(;|$)' LIMIT 0, 30' at line 1
"
j'ai mis select * from enquete_energie where question4 = REGEX '(^|;)14(;|$)'
merci de ton aide
0
Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   70
 
Essayes
select * from enquete where REGEXP '(^|;)14(;|$)' 

ou
select * from enquete where (question4 like "14;%") or (question4 like "%;14;%") or (question4 like "%;14") or (question4 = "14") 


Au choix...
0
kyuubi6
 
j'ai essayé avec le regexp mais ca marche pas, en meme temps je comprends pas comment ca marcherait vu qu'après le where tu ne lui dis pas sur quel champ tu travail?
pour la deuxième solution ca a l'air d'être une bonne idée mais le souci est que je vérif plusieurs nombre et donc ma requête risque d'être hyper lourde
0
Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   70
 
Ah oui j'ai oublié le question4 ^^" Ca donne donc :
select * from enquete where question4 REGEXP '(^|;)14(;|$)' 
0
kyuubi6
 
ca fonctionne mais maintenant j'ai une autre question lol comment je fais si je veux verifier plusieurs valeur? genre 12,14,18,19
0
Leviathan49 Messages postés 257 Date d'inscription   Statut Membre Dernière intervention   70
 
La synthaxe avec regexp marche ?
Si c'est le cas essaye ceci
select * from enquete where question4 REGEXP '(^|;)(12|14|18|19)(;|$)'
avec des pipe '|' entre chaque valeurs.
0
kyuubi6
 
merci beaucoup ca marche
0