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

Cómo dividir una cadena en MySQL

Problema:

Le gustaría dividir una cadena en MySQL.

Ejemplo:

Nuestra base de datos tiene una tabla llamada Student con datos en las columnas id y name .

id nombre
1 Ann Smith
2 Mark Twain
3 Brad Green

Busquemos los datos del nombre de la columna y divídalos en firstname y lastname .

Solución:

Usaremos el SUBSTRING_INDEX() función. Aquí está la consulta:

SELECT
SUBSTRING_INDEX(name,' ',1) AS firstname,
SUBSTRING_INDEX(name,' ',-1) AS lastname
FROM Student

Este es el resultado de la consulta:

nombre apellido
Ana Smith
Marcar Dos
Brad Verde

Discusión:

La función SUBSTRING_INDEX() toma 3 argumentos:la cadena de origen, el delimitador y el recuento de ocurrencias del delimitador.

La cadena de origen es la cadena que nos gustaría dividir.

El delimitador es una cadena de caracteres que SUBSTRING_INDEX() función busca en la cadena de origen. Cuando se encuentra, indica el lugar donde termina la subcadena. El delimitador puede ser un solo carácter, como un espacio, pero también puede ser un patrón que consta de dos o más caracteres. Este patrón distingue entre mayúsculas y minúsculas; es decir, importa si los caracteres dados están en mayúsculas o minúsculas. Recuerda que el delimitador es una cadena, por lo que debe escribirse entre comillas (‘’).

El último argumento es el recuento de ocurrencias . Indica el número de veces que se debe hacer coincidir el patrón delimitador. Tenga en cuenta que el recuento de ocurrencias puede ser un valor negativo. Cuando es negativo, contamos las ocurrencias del delimitador de la derecha. Cuando la cuenta es un número positivo, contamos desde la izquierda.

La función genera todos los caracteres de la cadena de origen hasta que el delimitador coincide con la cantidad de veces dada por el recuento de ocurrencias.

Si ejecutamos la siguiente consulta:

SELECT
SUBSTRING_INDEX('Ann Smith',' ',1);

la salida será:

Ann

Como puede ver, la función devolvió todos los caracteres hasta que se encontró el primer espacio de la izquierda.

En nuestro ejemplo, recuperamos como nombre del estudiante todos los caracteres hasta el primer espacio desde la izquierda y como apellido del estudiante todos los caracteres hasta el primer espacio desde la derecha.