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() . 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 slashs '\' 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-slashs 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).

    MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION] )
    MATCH ... AGAINST() est utilisé pour les recherches en texte plein et retourne une information de pertinence - pertinence mesuré entre le texte des colonnes (col1,col2,...) et la valeur expr . La pertinence est un nombre à virgule flottante positif. La pertinence zéro signifie qu'il n'y a aucune similitude. MATCH ... AGAINST() est utilisable dans les versions 3.23.23 ou suivantes de MySQL. L'extension IN BOOLEAN MODE a été ajoutée dans la version 4.0.1. Pour plus des détails ainsi que des exemples, voir Recherche full-text avec MySQL .

    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 compatiblité 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-slashs '\' 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 sensile à 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