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
Annexe F, Expressions régulières 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()
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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.