Fonctions à utiliser dans les clauses SELECT et WHERE
<<<
Opérateurs de comparaison pour les chaînes de caractères Fonctions à utiliser dans les clauses SELECT et WHERE
>>>

13.3 Fonctions de chaînes de caractères
13 Fonctions à utiliser dans les clauses SELECT et WHERE
 Manuel de Référence MySQL 4.1 : Version Française

->Opérateurs de comparaison pour les chaînes de caractères

13.3.1 Opérateurs de comparaison pour les chaînes de caractères

MySQL convertit automatiquement les nombres en chaînes et et vice-versa :


mysql> SELECT 1+'1';
        -> 2
mysql> SELECT CONCAT(2,' test');
        -> '2 test'
Si vous devez convertir explicitement un nombre en chaîne, passez-le en argument de la fonction CONCAT() .

mysql> SELECT 38.8, CAST(38.8 AS CHAR);
        -> 38.8, '38.8'
mysql> SELECT 38.8, CONCAT(38.8);
        -> 38.8, '38.8'
CAST() est recommandée, mais elle a été ajoutée en MySQL 4.0.2.Si une fonction de chaîne de caractères est donnée comme chaîne binaire dans un argument d'une autre fonction, le résultat sera aussi une chaîne binaire. Les nombres convertis en chaînes sont traités comme des chaînes binaires. Cela affecte les comparaisons.

Normalement, si l'une des expressions dans une comparaison de chaîne est sensible à la casse, la comparaison est exécutée en tenant compte de la casse.
    expr LIKE pat [ESCAPE 'escape-char']
    La réalisation d'expression utilisant les expressions régulières simples de comparaison de SQL. Retourne 1 (TRUE) ou 0 (FALSE). Avec LIKE , vous pouvez utiliser les deux jokers suivants :
    Char Description
    % Remplace n'importe quel nombre de caractères, y compris aucun
    _ Remplace exactement un caractère
    
    mysql> SELECT 'David!' LIKE 'David_';
            -> 1
    mysql> SELECT 'David!' LIKE '%D%v%';
            -> 1
    Pour tester la présence littérale d'un joker, précédez-le d'un caractère d'échappement. Si vous ne spécifiez pas le caractère d'échappement ESCAPE , le caractère '\' sera utilisé :
    String Description
    \% Remplace le caractère littéral '%'
    \_ Remplace le caractère littéral '_'
    
    mysql> SELECT 'David!' LIKE 'David\_';
            -> 0
    mysql> SELECT 'David_' LIKE 'David\_';
            -> 1
    Pour spécifier un caractère d'échappement différent, utilisez la clause ESCAPE :
    
    mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';
            -> 1
    Les deux exemples suivants illustrent le fait que les comparaisons de chaînes de caractères ne sont pas sensibles à la casse à moins qu'une des opérandes soit une chaîne binaire.
    
    mysql> SELECT 'abc' LIKE 'ABC';
            -> 1
    mysql> SELECT 'abc' LIKE BINARY 'ABC';
            -> 0
    LIKE est également autorisé pour les expressions numériques. (C'est une extension MySQL à la norme ANSI SQL LIKE .)
    
    mysql> SELECT 10 LIKE '1%';
            -> 1
    Note : Comme MySQL utilise la syntaxe d'échappement de caractères du langage C dans les chaînes (par exemple, '\n' ), vous devez doubler tous les slash '\' que vous utilisez dans les expressions LIKE . Par exemple, pour rechercher les nouvelles lignes ( '\n' ), vous devez le spécifier comme cela : '\\n' . Pour rechercher un anti-slash ( '\' ), vous devez le spécifier comme cela : '\\\\' (les anti-slash sont supprimés une première fois pas l'analyseur syntaxique, puis une deuxième fois par le moteur d'expression régulières, ce qui ne laisse qu'un seul anti-slash à la fin).

    Note : actuellement, LIKE n'est pas compatible avec les caractères multi-octets. La comparaison est faîte caractère par caractère.

    expr NOT LIKE pat [ESCAPE 'escape-char']

    Equivalent à NOT (expr LIKE pat [ESCAPE 'escape-char']) .

    expr NOT REGEXP pat
    expr NOT RLIKE pat

    Equivalent à NOT (expr REGEXP pat) .

    expr REGEXP pat
    expr RLIKE pat
    Effectue une recherche de chaîne avec l'expression régulière pat . Le masque peut être une expression régulière étendue. Voir la section Expressions régulières de MySQL . Retourne 1 si expr correspond au masque pat , sinon, retourne 0 . RLIKE est un synonyme de REGEXP , fourni pour assurer la compatibilité avec mSQL . Note : Comme MySQL utilise la syntaxe d'échappement de caractères du langage C dans les chaînes (par exemple, '\n' ), vous devez doubler tous les anti-slash '\' que vous utilisez dans les expressions REGEXP . A partir de la version 3.23.4 de MySQL, REGEXP est insensible à la casse pour les comparaisons de chaînes normales (non binaires) :
    
    mysql> SELECT 'Monty!' REGEXP 'm%y%%';
            -> 0
    mysql> SELECT 'Monty!' REGEXP '.*';
            -> 1
    mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
            -> 1
    mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';
            -> 1  0
    mysql> SELECT 'a' REGEXP '^[a-d]';
            -> 1
    STRCMP(expr1,expr2)
    STRCMP() retourne 0 si les chaînes sont identiques, -1 si la première chaîne est plus petite que la seconde et 1 dans les autres cas :
    
    mysql> SELECT STRCMP('text', 'text2');
            -> -1
    mysql> SELECT STRCMP('text2', 'text');
            -> 1
    mysql> SELECT STRCMP('text', 'text');
            -> 0
    Depuis MySQL 4.0, STRCMP() utilise le jeu de caractères courant pour effectuer des comparaisons. Cela fait que le comportement par défaut est la comparaison insensible à la casse, à moins que l'un des deux opérandes soient une chaîne binaire. Avant MySQL 4.0, STRCMP() était sensible à la casse.

<< Opérateurs de comparaison pour les chaînes de caractères >>
Fonctions à utiliser dans les clauses SELECT et WHERE Fonctions de chaînes de caractères Fonctions à utiliser dans les clauses SELECT et WHERE