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