Je suis un débutant dans l'étude de SQL.
Je doute de quelque chose.
Aujourd'hui, j'ai vu quelques exemples de requêtes et j'ai trouvé des comparaisons de chaînes dans la condition WHERE.
La comparaison a été faite en utilisant les symboles supérieur à (>) et inférieur à (<), est-ce un moyen possible de comparer des chaînes en SQL? et comment agit-il? une chaîne inférieure à une autre vient avant dans l'ordre du dictionnaire? Par exemple, la balle est inférieure à l'eau? et cette comparaison est sensible à la casse? par exemple BALL <eau, le caractère upcase affecte-t-il ces comparaisons?
J'ai fait des recherches sur Google pendant des heures, mais je n'ai rien trouvé qui puisse me faire sortir de ce doute.
Les opérateurs de comparaison (y compris <
et >
) "fonctionne" avec des valeurs de chaîne ainsi que des nombres.
Pour MySQL
Par défaut, les comparaisons de chaînes ne respectent pas 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 toutes les informations disponibles dans le manuel de référence MySQL ici.
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/classements 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?
A: Oui, à la fois dans MySQL et SQL Server
Q: et comment agit-il?
A: Un opérateur de comparaison renvoie un booléen, 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?
A: Oui, car "b" vient avant "w" dans le classement des caractères, l'expression
'ball' < 'water'
retournera VRAI. (Cela dépend du jeu de caractères et du classement .
Q: et cette comparaison est sensible à la casse?
A: Le fait qu'une comparaison particulière respecte ou non la casse dépend du serveur de base de données; par défaut, SQL Server et MySQL ne respectent pas 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 BALL <water, le caractère majuscule affecte-t-il ces comparaisons?
A: Par défaut, dans SQL Server et MySQL, l'expression
'BALL' < 'water'
retournerait VRAI.
Dans Microsoft SQL Server, le classement détermine les règles de dictionnaire pour comparer et trier les données de caractères en ce qui concerne:
SQL Server inclut également des classements binaires où la comparaison et le tri sont effectués par point de code binaire plutôt que par des règles de dictionnaire. Une fois, vous pouvez choisir parmi de nombreux classements en fonction du comportement de sensibilité souhaité. Le classement par défaut sélectionné pour les paramètres régionaux de langue en latin lors de l'installation de SQL est insensible à la casse et sensible aux accents.
Le classement est spécifié au niveau de l'instance (lors de l'installation), de la base de données et de la colonne. Le classement d'instance détermine le classement des objets au niveau de l'instance comme les connexions et les noms de base de données ainsi que les identificateurs des variables, des étiquettes GOTO et des tables temporaires. Le classement de la base de données (identique au classement d'instance par défaut), détermine le classement des identificateurs de base de données tels que les noms de table et de colonne ainsi que les expressions littérales. Le classement des colonnes (identique au classement de la base de données par défaut) détermine le classement de cette colonne.
Il est certainement possible de comparer des chaînes en utilisant '<', '>', '<>', LIKE, BETWEEN, etc.