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.
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.
[quote="Franquito"]Voyez vous une solution ? [0-9999] comme sous linux ?[/quote]
Oui. Mais, même sous Linux, la classe [0-9999] n'existe pas. :wink:
[code]SELECT *
FROM `table`
WHERE col1 REGEXP '^AOCB[0-9]+$'[/code]
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.