13.1 Opérateurs et fonctions tous types
13 Fonctions à utiliser dans les clauses SELECT et WHERE
Manuel de Référence MySQL 4.1 : Version Française
. Parenthèses . Opérateurs de comparaison . Opérateurs logiques ->Sensibilité à la casse
|
13.1.4 Sensibilité à la casse
-
BINARY
-
L'opérateur
BINARY
modifie la chaîne qui le suit en une chaîne binaire.
C'est une solution simple pour forcer la comparaison de colonnes à être sensible à la casse
même si la colonne n'est pas définie comme étant de type
BINARY
ou
BLOB
:
mysql> SELECT "a" = "A"; -> 1 mysql> SELECT BINARY "a" = "A"; -> 0
|
BINARY string
est un raccourci pour
CAST(string AS BINARY)
.
Fonctions de transtypage .
BINARY
a été introduit dans MySQL à partir de la version 3.23.0.
Notez que dans quelques cas, MySQL n'est pas capable d'utiliser
l'index efficacement lorsque vous modifiez une colonne indexée en
BINARY
.
Si vous voulez comparer un champ de type
BLOB
d'une manière
insensible à la casse, vous pouvez suivre cette procédure :
-
Avant MySQL 4.1.1, utilisez la fonction
UPPER()
pour convertir le
BLOB
en majuscules avant la comparaison :
SELECT 'A' LIKE UPPER(blob_col) FROM tbl_name;
|
Si la valeur de comparaison est en minuscules, convertisses le
BLOB
en minuscules avec la fonction
LOWER()
.
-
Depuis MySQL 4.1.1, les colonnes
BLOB
ont un jeu de caractère de type
binary
, ce qui signifie qu'il n'y a pas de concept de minuscules. Pour
faire une comparaison sans la casse, utilisez la fonction
CONVERT()
pour convertir
une valeur
BLOB
en un jeu de caractères qui n'est pas insensible à la
casse. Le résultat est une chaîne non-binaires, et l'opérateur
LIKE
n'est pas sensible à la casse :
SELECT 'A' LIKE CONVERT(blob_col USING latin1) FROM tbl_name;
|
Pour utiliser d'autres jeux de caractères, remplacez le
nom de
latin1
dans l'exemple précédent.
CONVERT()
peut aussi être utilisée pour comparer des chaînes qui sont
représentées dans d'autres jeux de caractères.
|