7.3.6 Fonctions de comparaisons des chaînes

Dans une expression quelconque, si une des chaînes est sensible à la casse, alors la comparaison tiendra compte de la casse.

  • expr1 LIKE expr2 [ESCAPE 'escape-char'] Expression régulière SQL. Retourne 1 (TRUE) ou 0 (FALSE). Avec LIKE, les caractères spéciaux suivants sont disponibles :
    mysql> select 'David!' LIKE 'David_';
            -> 1
    mysql> select 'David!' LIKE '%D%v%';
            -> 1
    

    Pour tester la présence d'un des caractères spéciaux, il suffit de faire précéder du caractère d'échappement. Si ce dernier n'est pas précisé, le caractère ``\'' est alors utilisé.

    mysql> select 'David!' LIKE 'David\_';
            -> 0
    mysql> select 'David_' LIKE 'David\_';
            -> 1
    

    Pour spécifier un autre caractère d'échappement, il faut utiliser la clause ESCAPE :

    mysql> select 'David_' LIKE 'David|_' ESCAPE '|';
           -> 1
    

    LIKE peut travailler avec des expressions numériques (c'est une extension de la norme ANSI SQL.)

    mysql> select 10 LIKE '1%';
            -> 1
    

    Note: Comme MySQL utilise le système d'échappement du langage C (e.g., ``\n''), il faut doubler toutes les occurrences dans les clause LIKE. Par exemple, pour rechercher le caractère ``\n'', il faut mettre la chaîne ``\\n''. Pour recherche le caractère for ``\'', il faut l'écrire ``\\\\'' (les backslashes sont supprimés une première fois par l'analyseur syntaxique, et une deuxième fois, quand la recherche est terminée : ce qui laisse un seul backslash à rechercher).

  • expr1 NOT LIKE expr2 [ESCAPE 'escape-char'] Identique à NOT (expr1 LIKE expr2 [ESCAPE 'escape-char']).
  • expr REGEXP pat
  • expr RLIKE pat
  • expression REGEXP pat
  • expression RLIKE pat Effectue une chercher sur la chaîne expression avec le masque pat. Le pattern peut être une expression régulière étendue. Retoune 1 si l'expression régulière réussit, 0. RLIKE est un synonyme pour REGEXP, fourni pour assurer la compatibilité avec mSQL Note: Comme MySQL utilise le système d'échappement du langage C (e.g., ``\n''), il faut doubler toutes les occurrences dans les clause. REGEXP .
    
    mysql> select 'Monty!' REGEXP 'm%y%%';
            -> 0
    mysql> select 'Monty!' REGEXP '.*';
            -> 1
    mysql> select 'new*\n*line' REGEXP 'new\\*.\\*line';
            -> 1
    

    REGEXP et RLIKE utilisent le jeu de caractère (ISO-8859-1 Latin1 par défaut) pour choisir le type de caractère.

  • expr NOT REGEXP pat
  • expr NOT RLIKE pat
  • expression NOT REGEXP expression Identique à NOT (expression REGEXP expression ).
  • STRCMP(expr1,expr2) STRCMP() retourne 0 si les chaînes sont identiques, -1 si le premier argument est plus petit que le second, en fonction de l'ordre de tri courant, et sinon 1 .
    mysql> select STRCMP('text', 'text2');
            -> -1
    mysql> select STRCMP('text2', 'text');
            -> 1
    mysql> select STRCMP('text', 'text');
            -> 0