condition WHERE LIKE

Eléphant du PHP | 73 Messages

12 août 2011, 11:58

bonjour,

j'aimerais savoir si il était possible de rechercher un string dans un field d'une requête SQL, mais strict.

je m'explique :

j'ai deux entrées dans ma base, par exemple :

nom valeur
toto 1 3 7 9 15
titi 2 4 17 65 74

j'aimerais rechercher l'entrée de ma base qui contient le numéro "7" dans son champ (chaque ID est unique et ne peut etre dans deux lignes), et "uniquement 7" (pas le 17, 74 etc;. contenant un 7)

lorsque je fais un :

SELECT * FROM table WHERE valeur LIKE "%7%"

çe me sort toutes les lignes ou il trouve l'occurence "7" (donc toto et titi dans le cas précédent)
les ID sont toujours séparés par 1 espace (mais je ne peux pas mettre LIKE % 7 % car si le 7 est seul par exemple, il n'y a d'espace ni devant ni derrière)

y-a-t'il une commande pour ce genre de chose ? un wildcard particulier ?

merci

Eléphant du PHP | 73 Messages

12 août 2011, 12:04

mmh je viens de trouver je crois, même si j'imagine qu'il y a plus simple ?

Code : Tout sélectionner

SELECT * FROM table WHERE valeur REGEXP "[[:<:]]7[[:>:]]"

devlop78
Invité n'ayant pas de compte PHPfrance

12 août 2011, 20:39

Si REGEXP "[[:<:]]7[[:>:]]" veut dire ESPACE 7 ESPACE, alors imagine ce qu'il se passe si le 7 est tout au début ou tout à la fin. Si tu dis ESPACE 7 OU 7 ESPACE, imagine si 7 est tout seul.

Bref, valeur atomique = à enregistrer séparément. A partir de là, tu peux trouver des moyens alternatifs éventuels, certains plus simples que ton code, mais pas plus propre ...