sql >> Base de Datos >  >> RDS >> Mysql

Cómo usar STRCMP() para comparar 2 cadenas en MySQL

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.