Mysql
 sql >> Database >  >> RDS >> Mysql

Come utilizzare STRCMP() per confrontare 2 stringhe in MySQL

Una delle funzioni di stringa in MySQL è STRCMP() . Questa funzione ti consente di confrontare due stringhe in base al loro ordinamento.

La funzione accetta due argomenti. Ogni argomento è la stringa da confrontare. Restituisce 1 , -1 o 0 , a seconda che la prima stringa sia più grande, più piccola o della stessa dimensione della seconda stringa, in base all'ordinamento.

Sintassi

Ecco la sintassi:

STRCMP(expr1,expr2)

Dove expr1 è la prima stringa e expr2 è la seconda stringa.

Esempi

Ecco un esempio in cui la prima stringa è più piccola della seconda stringa in base all'ordinamento:

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

Risultato:

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

Se scambiamo gli argomenti, otteniamo questo:

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

Risultato:

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

E se usiamo la stessa stringa per entrambi gli argomenti otteniamo questo:

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

Risultato:

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

Naturalmente, le stringhe possono (e probabilmente saranno) composte da più di un singolo carattere:

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

Risultato:

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

Fascicolazione

Il STRCMP() La funzione usa le regole di confronto quando si confrontano le stringhe. Ciò significa che potresti ottenere risultati diversi a seconda della raccolta utilizzata. Gli esempi seguenti lo dimostrano.

Maiuscole/minuscole

In questo esempio eseguiamo il confronto utilizzando un confronto senza distinzione tra maiuscole e minuscole (il _ci parte della raccolta significa senza distinzione tra maiuscole e minuscole):

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

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

Risultato:

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

Maiuscole/minuscole

In questo esempio eseguiamo il confronto utilizzando un confronto con distinzione tra maiuscole e minuscole (il _cs parte della raccolta indica la distinzione tra maiuscole e minuscole):

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

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

Risultato:

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

In MySQL, le regole di confronto possono essere impostate a vari livelli (ad es. livello di connessione, livello di database, livello di colonna, ecc.). Se non sei sicuro di quale confronto venga utilizzato, consulta Come trovare il confronto in MySQL.