[RESOLU] LIKE avec des chiffres ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] LIKE avec des chiffres ?

par Franquito » 02 mai 2005, 11:12

J'ai finalement opté pour :

Code : Tout sélectionner

$mask = '`([A-Z]+)([0-9]+)`'; $vins = preg_replace($mask, '$1' , $ref);
Merci a tous

par albat » 02 mai 2005, 10:20

moi, je pense plutôt à un str_replace()
for ($i=0 ; $i<9 ; $i++)
    $chaine = str_replace("'".$i."'", "", $chaine);

par Cyrano » 02 mai 2005, 09:48

En utilisant la fonction trim(), ça devrait pouvoir se faire.

par Franquito » 02 mai 2005, 09:45

Avant de mettrre le [resolu] dans le titre, j'aurai voulu savoir si l'ont peut faire l'inverse ? c'est a dire retirer les derniers numéro de la chaine ?

Par exemple :

AOCB6 => AOCB
VDPSY5 => VDPSY
VDPB12 => VDPV

Merci d'avance :)

par Franquito » 28 avr. 2005, 21:47

Merci les gars, j'ai finalement opté pour les expressions règulières, ca marche niquel.

Encore Merci :)

par albat » 28 avr. 2005, 10:35

Mais ca lui ramènera cette valeur AOCBSY6 qu'il ne veut pas.
Au temps pour moi, j'avais mal compris la question. :oops:
À la relecture, je n'ai pas d'autre idée que les regexp effectivement.

Re: LIKE avec des chiffres ?

par Ripat » 28 avr. 2005, 09:07

Voyez vous une solution ? [0-9999] comme sous linux ?
Oui. Mais, même sous Linux, la classe [0-9999] n'existe pas. :wink:

Code : Tout sélectionner

SELECT * FROM `table` WHERE col1 REGEXP '^AOCB[0-9]+$'
Si on répugne à utiliser les expressions régulières on devrait pouvoir s'en tirer avec CAST->SUBSTRING et faire une comparaison sur la valeur retournée, mais c'est vraiment tordu. Pas recommandé non plus côté perfo.

Contrairement à leur réputation, les regex sont performantes lorsque utilisées à bon escient. D'autant plus que le moteur regex de MySQL, comme celui d'egrep de Linux ou de awk, est du type DFA (Deterministic Finite Automation) beaucoup plus simple, moins riche que les regex PHP mais encore plus rapide.

par pjl » 27 avr. 2005, 22:47

Mais ca lui ramènera cette valeur AOCBSY6 qu'il ne veut pas.

par albat » 27 avr. 2005, 22:45

Si ton champ est déclaré dans un type chaîne de caractères,
tu dois pouvoir utiliser l'instruction LIKE sans problèmes.
SELECT * FROM table WHERE champ LIKE "%123%"
devrait te retourner la valeur ABC123DEF

par Cyrano » 27 avr. 2005, 22:38

Avec LIKE, je ne suis pas certain, mais avec REGEXP sûrement

par pjl » 27 avr. 2005, 22:37

regarde du coté des expressions régulières.
par contre, je ne suis pas sur que toutes les versions de BDD les acceptent.

LIKE avec des chiffres ?

par Franquito » 27 avr. 2005, 22:35

Bonsoir à tous ;)

J'aurai voulu savoir s'il était possible d'utiliser LIKE dans une requete SQL mais uniquement pour des chiffres ?

par exemple comme 'LIKE AOCB%' mais cette fois ci le % remplacerais une chaine de numéro comme "0315" ou bien "6" voir "12"...

De fait je pourrai selectionner :
AOCB0315
AOCB6
AOCB12

Mais pas :
AOCBSY6

Voyez vous une solution ? [0-9999] comme sous linux ?