Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser STRCMP() pour comparer 2 chaînes dans MySQL

L'une des fonctions de chaîne dans MySQL est STRCMP() . Cette fonction permet de comparer deux chaînes selon leur ordre de tri.

La fonction accepte deux arguments. Chaque argument est la chaîne à comparer. Il renvoie soit 1 , -1 , ou 0 , selon que la première chaîne est plus grande, plus petite ou de la même taille que la deuxième chaîne, selon l'ordre de tri.

Syntaxe

Voici la syntaxe :

STRCMP(expr1,expr2)

expr1 est la première chaîne et expr2 est la deuxième chaîne.

Exemples

Voici un exemple où la première chaîne est plus petite que la deuxième chaîne selon l'ordre de tri :

SELECT STRCMP('A', 'B');

Résultat :

+------------------+
| STRCMP('A', 'B') |
+------------------+
|               -1 |
+------------------+

Si nous échangeons les arguments, nous obtenons ceci :

SELECT STRCMP('B', 'A');

Résultat :

+------------------+
| STRCMP('B', 'A') |
+------------------+
|                1 |
+------------------+

Et si nous utilisons la même chaîne pour les deux arguments, nous obtenons ceci :

SELECT STRCMP('A', 'A');

Résultat :

+------------------+
| STRCMP('A', 'A') |
+------------------+
|                0 |
+------------------+

Bien entendu, les chaînes peuvent (et seront probablement) composées de plusieurs caractères :

SELECT STRCMP('A big box', 'Wind and rain') AS Result;

Résultat :

+--------+
| Result |
+--------+
|     -1 |
+--------+

Collation

Le STRCMP() La fonction utilise le classement lors de la comparaison des chaînes. Cela signifie que vous pouvez obtenir des résultats différents selon le classement utilisé. Les exemples suivants le démontrent.

Insensible à la casse

Dans cet exemple, nous effectuons la comparaison en utilisant un classement insensible à la casse (le _ci une partie de la collation signifie insensible à la casse):

SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_ai_ci;
SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_ai_ci;

SELECT STRCMP(@lowercase, @uppercase) AS Result;

Résultat :

+--------+
| Result |
+--------+
|      0 |
+--------+

Sensible à la casse

Dans cet exemple, nous effectuons la comparaison en utilisant un classement sensible à la casse (le _cs une partie de la collation signifie sensible à la casse) :

SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_as_cs;
SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_as_cs;

SELECT STRCMP(@lowercase, @uppercase) AS Result;

Résultat :

+--------+
| Result |
+--------+
|     -1 |
+--------+

Dans MySQL, le classement peut être défini à différents niveaux (par exemple, au niveau de la connexion, au niveau de la base de données, au niveau de la colonne, etc.). Si vous n'êtes pas sûr du classement utilisé, consultez Comment trouver le classement dans MySQL.