Requete "in"

Résolu
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

  1. 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
    1. Ah oui j'ai oublié le question4 ^^" Ca donne donc :
      select * from enquete where question4 REGEXP '(^|;)14(;|$)' 
      0
    2. 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
    3. 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
    4. merci beaucoup ca marche
      0
  2. 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
    1. 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
  3. 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
    1. 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
  4. 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