Una de las funciones de cadena en MySQL es STRCMP()
. Esta función le permite comparar dos cadenas según su orden de clasificación.
La función acepta dos argumentos. Cada argumento es la cadena a comparar. Devuelve 1
, -1
, o 0
, dependiendo de si la primera cadena es más grande, más pequeña o del mismo tamaño que la segunda cadena, según el orden de clasificación.
Sintaxis
Aquí está la sintaxis:
STRCMP(expr1,expr2)
Donde expr1
es la primera cadena y expr2
es la segunda cadena.
Ejemplos
Aquí hay un ejemplo donde la primera cadena es más pequeña que la segunda cadena según el orden de clasificación:
SELECT STRCMP('A', 'B');
Resultado:
+------------------+ | STRCMP('A', 'B') | +------------------+ | -1 | +------------------+
Si intercambiamos los argumentos obtenemos esto:
SELECT STRCMP('B', 'A');
Resultado:
+------------------+ | STRCMP('B', 'A') | +------------------+ | 1 | +------------------+
Y si usamos la misma cadena para ambos argumentos obtenemos esto:
SELECT STRCMP('A', 'A');
Resultado:
+------------------+ | STRCMP('A', 'A') | +------------------+ | 0 | +------------------+
Por supuesto, las cadenas pueden consistir (y probablemente lo harán) en más de un solo carácter:
SELECT STRCMP('A big box', 'Wind and rain') AS Result;
Resultado:
+--------+ | Result | +--------+ | -1 | +--------+
Colección
El STRCMP()
La función utiliza la intercalación al comparar las cadenas. Esto significa que podría obtener diferentes resultados dependiendo de la intercalación que se utilice. Los siguientes ejemplos lo demuestran.
Insensible a mayúsculas y minúsculas
En este ejemplo, realizamos la comparación utilizando una intercalación que no distingue entre mayúsculas y minúsculas (el _ci
parte de la colación significa que no distingue entre mayúsculas y 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 | +--------+
Sensible a mayúsculas y minúsculas
En este ejemplo, realizamos la comparación utilizando una intercalación que distingue entre mayúsculas y minúsculas (el _cs
parte de la colación significa que distingue entre mayúsculas y 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 | +--------+
En MySQL, la intercalación se puede configurar en varios niveles (por ejemplo, nivel de conexión, nivel de base de datos, nivel de columna, etc.). Si no está seguro de qué intercalación se está utilizando, consulte Cómo encontrar la intercalación en MySQL.