Uma das funções de string no MySQL é
STRCMP()
. Esta função permite comparar duas strings de acordo com sua ordem de classificação. A função aceita dois argumentos. Cada argumento é a string a ser comparada. Ele retorna
1
, -1
, ou 0
, dependendo se a primeira string é maior, menor ou do mesmo tamanho que a segunda string, de acordo com a ordem de classificação. Sintaxe
Aqui está a sintaxe:
STRCMP(expr1,expr2)
Onde
expr1
é a primeira string e expr2
é a segunda corda. Exemplos
Aqui está um exemplo em que a primeira string é menor que a segunda string de acordo com a ordem de classificação:
SELECT STRCMP('A', 'B');
Resultado:
+------------------+ | STRCMP('A', 'B') | +------------------+ | -1 | +------------------+
Se trocarmos os argumentos, obtemos isso:
SELECT STRCMP('B', 'A');
Resultado:
+------------------+ | STRCMP('B', 'A') | +------------------+ | 1 | +------------------+
E se usarmos a mesma string para ambos os argumentos, obtemos isso:
SELECT STRCMP('A', 'A');
Resultado:
+------------------+ | STRCMP('A', 'A') | +------------------+ | 0 | +------------------+
Claro, as strings podem (e provavelmente irão) consistir em mais de um único caractere:
SELECT STRCMP('A big box', 'Wind and rain') AS Result;
Resultado:
+--------+ | Result | +--------+ | -1 | +--------+
Agrupamento
O
STRCMP()
A função usa o agrupamento ao comparar as strings. Isso significa que você pode obter resultados diferentes dependendo do agrupamento que está sendo usado. Os exemplos a seguir demonstram isso. Não diferencia maiúsculas de minúsculas
Neste exemplo, realizamos a comparação usando um agrupamento que não diferencia maiúsculas de minúsculas (o
_ci
parte do agrupamento significa que não diferencia maiúsculas de minúsculas):SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_ai_ci; SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_ai_ci; SELECT STRCMP(@lowercase, @uppercase) AS Result;
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
Diferencia maiúsculas de minúsculas
Neste exemplo, realizamos a comparação usando um agrupamento que diferencia maiúsculas de minúsculas (o
_cs
parte do agrupamento significa que diferencia maiúsculas de minúsculas):SET @lowercase = _utf8mb4 'a' COLLATE utf8mb4_0900_as_cs; SET @uppercase = _utf8mb4 'A' COLLATE utf8mb4_0900_as_cs; SELECT STRCMP(@lowercase, @uppercase) AS Result;
Resultado:
+--------+ | Result | +--------+ | -1 | +--------+
No MySQL, o agrupamento pode ser definido em vários níveis (por exemplo, nível de conexão, nível de banco de dados, nível de coluna, etc). Se você não tiver certeza de qual agrupamento está sendo usado, consulte Como encontrar o agrupamento no MySQL.