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.