Aller au contenu

[RESOLU] preg_match en MySQL


Sujets conseillés

Posté (modifié)

Bonjour,

Je voudrais savoir s'il existe un moyen d'utiliser les expressions régulières dans une requête MySQL

par exemple pour rechercher les numéross de telephone commençant par 03

$requete = "SELECT email FROM table WHERE telephone=preg_match("^03")";
$resultat = mysql_query($requete);

Modifié par MS-DOS_1991
Posté (modifié)

Salut loufoque et merci de ta réponse

Voici ce que dit la doc de MySQL:

Annexe F. Expressions régulières MySQL

Une expression régulière (regex) est la meilleure méthode pour spécifier une recherche complexe.

MySQL utilise l'implémentation de Henry Spencer des expressions régulières qui tend à être conforme à POSIX 1003.2. MySQL en utilise la version étendue. See Annexe B, Crédits. MySQL la version améliorée pour supporter les expressions régulières effectuées avec REGEXP dans les commandes SQL. See Section 3.3.4.7, « Recherche de modèles ».

Ceci est une référence simplifiée qui n'aborde pas les détails. Pour avoir plus d'informations, reportez-vous à la page de manuel regex(7) de Henry Spencer. Ce manuel est inclus dans la distribution MySQL, dans le fichier regex.7 du dossier regex.

Une expression régulière décrit un jeu de chaînes de caractères. La plus simple est celle qui ne comporte pas de caractères spéciaux. Par exemple, l'expression régulière bonjour trouvera bonjour et rien d'autre.

Les expression régulières non-triviales utilisent des constructions spéciales pour pouvoir trouver plus d'une chaîne. Par exemple, l'expression régulière bonjour|monde trouve la chaîne bonjour ou la chaîne monde.

Voici un exemple encore plus complexe : l'expression régulière B[an]*s trouve l'une des chaînes suivantes Bananas, Baaaaas, Bs, et n'importe quelle autre chaîne commenžant par un B, se terminant par un s, et contenant n'importe quel nombre de a et de n au milieu.

Une expression régulière peut utiliser l'un des caractères spéciaux ou constructions suivants :

    ^

Correspond au début de la chaîne.

mysql> SELECT "fo\nfo" REGEXP "^fo$";          -> 0

mysql> SELECT "fofo" REGEXP "^fo";              -> 1

    $

Correspond à la fin de la chaîne.

mysql> SELECT "fo\no" REGEXP "^fo\no$";        -> 1

mysql> SELECT "fo\no" REGEXP "^fo$";            -> 0

    .

N'importe quel caractère (nouvelle ligne inclus).

mysql> SELECT "fofo" REGEXP "^f.*";            -> 1

mysql> SELECT "fo\nfo" REGEXP "^f.*";          -> 1

    a*

Correspond à toute séquence de zéro ou plus caractères a.

mysql> SELECT "Ban" REGEXP "^Ba*n";            -> 1

mysql> SELECT "Baaan" REGEXP "^Ba*n";          -> 1

mysql> SELECT "Bn" REGEXP "^Ba*n";              -> 1

    a+

Correspond à toute séquence de un ou plus caractères a.

mysql> SELECT "Ban" REGEXP "^Ba+n";            -> 1

mysql> SELECT "Bn" REGEXP "^Ba+n";              -> 0

    a?

Correspond à zéro ou un caractère a.

mysql> SELECT "Bn" REGEXP "^Ba?n";              -> 1

mysql> SELECT "Ban" REGEXP "^Ba?n";            -> 1

mysql> SELECT "Baan" REGEXP "^Ba?n";            -> 0

    de|abc

Correspond aux séquences de de ou de abc.

mysql> SELECT "pi" REGEXP "pi|apa";            -> 1

mysql> SELECT "axe" REGEXP "pi|apa";            -> 0

mysql> SELECT "apa" REGEXP "pi|apa";            -> 1

mysql> SELECT "apa" REGEXP "^(pi|apa)$";        -> 1

mysql> SELECT "pi" REGEXP "^(pi|apa)$";        -> 1

mysql> SELECT "pix" REGEXP "^(pi|apa)$";        -> 0

    (abc)*

Correspond à zéro ou plus séquences de abc.

mysql> SELECT "pi" REGEXP "^(pi)*$";            -> 1

mysql> SELECT "pip" REGEXP "^(pi)*$";          -> 0

mysql> SELECT "pipi" REGEXP "^(pi)*$";          -> 1

(texte reformatté)

Modifié par MS-DOS_1991
Posté

Rebonjour,

euh... j'ai un petit doute :rolleyes:

La requete suivante est-elle correcte :huh::unsure: ?

"DELETE id, contenu FROM table WHERE contenu REGEXP ^[B][0-9]{2}$"
// On supprime les lignes dont l'id est B00, B01, B02, ..., Bxx

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...