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

Cómo seleccionar todo antes/después de cierto carácter en MySQL – SUBSTRING_INDEX()

Puede usar MySQL SUBSTRING_INDEX() función para devolver todo lo que está antes o después de cierto carácter (o caracteres) en una cadena.

Esta función le permite especificar el delimitador a usar, y puede especificar cuál (en el caso de que haya más de uno en la cadena).

Sintaxis

Aquí está la sintaxis:

SUBSTRING_INDEX(str,delim,count)

Donde str es la cadena, delim es el delimitador (del que desea una subcadena a la izquierda o a la derecha) y count especifica qué delimitador (en caso de que haya varias apariciones del delimitador en la cadena).

Tenga en cuenta que el delimitador puede ser un solo carácter o varios caracteres.

Ejemplo 1:seleccionar todo a la izquierda

Para seleccionar todo antes un carácter determinado, utilice un valor positivo:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);

Resultado:

Cats,Dogs

En este ejemplo, seleccionamos todo antes de la segunda coma. Esto se hace usando una coma (, ) como delimitador y 2 como el conteo.

Ejemplo 2:seleccionar todo a la derecha

Para seleccionar todo después cierto carácter, necesita usar un valor negativo:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);

Resultado:

Dogs,Rabbits

Tenga en cuenta que el valor negativo significa que contará desde la derecha, luego seleccione la subcadena a la derecha del delimitador.

¿Qué sucede si el delimitador no coincide?

Si el delimitador no se encuentra en la cadena, la cadena simplemente se devuelve completa.

Ejemplo:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);

Resultado:

Cats,Dogs,Rabbits

En este caso, la cadena completa se devuelve completa porque usamos un guión (- ) como delimitador, pero no había guiones en la cadena.

Obtendríamos el mismo resultado si la cadena does contienen el delimitador, pero nuestro count excede el número de delimitadores en la cadena.

Ejemplo:

SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);

Resultado:

Cats,Dogs,Rabbits

Sensible a mayúsculas y minúsculas

El SUBSTRING_INDEX() La función realiza una búsqueda del delimitador que distingue entre mayúsculas y minúsculas. Es decir, el delimitador debe ser el caso correcto antes de que coincida.

Caso incorrecto

Aquí hay un ejemplo donde el caso no coincide:

SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);

Resultado:

Cats and Dogs and Rabbits

Obtenemos toda la cadena en su totalidad.

Caso correcto

Ahora aquí está el mismo ejemplo, pero donde el caso coincide:

SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);

Resultado:

Cats and Dogs