Les opérateurs de comparaison (dont <
et >
) "fonctionne" avec des valeurs de chaîne ainsi que des nombres.
Pour MySQL
Par défaut, les comparaisons de chaînes ne sont pas sensibles à la casse et utilisent le jeu de caractères actuel. La valeur par défaut est
latin1
(cp1252 Europe de l'Ouest), qui fonctionne également bien pour l'anglais.
Les comparaisons de chaînes seront sensibles à la casse lorsque le classement du jeu de caractères des chaînes comparées est sensible à la casse, c'est-à-dire que le nom du jeu de caractères se termine par _cs
plutôt que _ci
. Il est vraiment inutile de répéter ici toutes les informations disponibles dans MySQL Reference Manual.
Référence des opérateurs de comparaison MySQL :
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html
Plus d'informations sur les jeux de caractères/collations MySQL :
http://dev.mysql.com/doc/refman/5.5/en/charset.html
Pour répondre aux questions spécifiques que vous avez posées :
Q : est-ce un moyen possible de comparer des chaînes en SQL ?
R : Oui, dans MySQL et SQL Server
Q : et comment agit-il ?
R : Un opérateur de comparaison renvoie un booléen, soit TRUE, FALSE ou NULL.
Q : une chaîne inférieure à une autre vient avant dans l'ordre du dictionnaire ? Par exemple, la balle est inférieure à l'eau ?
R : Oui, car 'b' vient avant 'w' dans le classement du jeu de caractères, l'expression
'ball' < 'water'
renverra VRAI. (Cela dépend du jeu de caractères et sur la collation .
Q : et cette comparaison est sensible à la casse ?
R : Le fait qu'une comparaison particulière soit sensible à la casse ou non dépend du serveur de base de données; par défaut, SQL Server et MySQL sont insensibles à la casse.
Dans MySQL, il est possible de faire des comparaisons de chaînes en spécifiant un classement de jeu de caractères sensible à la casse (le nom du jeu de caractères se terminera par _cs plutôt que _ci)
Q : Par exemple BOULE
R : Par défaut, dans SQL Server et MySQL, l'expression
renverrait TRUE. 'BALL' < 'water'