sql >> Base de Datos >  >> RDS >> MariaDB

Seleccione todo antes o después de un determinado personaje en MariaDB

En MariaDB, puede usar 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 acepta tres argumentos; la cadena, el delimitador y el número de ocurrencias de ese delimitador que se utilizará para determinar la subcadena que se devolverá.

Ejemplos

Podemos ver cómo funciona la función en los siguientes ejemplos.

Seleccionar todo antes

Para seleccionar todo antes de cierto carácter, haga que el tercer argumento sea un valor positivo:

SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 2);

Resultado:

Red,Green

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

Usé una coma en ese ejemplo, pero podría haber sido cualquier carácter o cadena:

SELECT SUBSTRING_INDEX('Red or Green or Blue', ' or ', 2);

Resultado:

Red or Green

Seleccionar todo después

Use un valor negativo para seleccionar todo después de cierto carácter:

SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', -2);

Resultado:

Green,Blue

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

Cuando no se encuentra el delimitador

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

Ejemplo:

SELECT SUBSTRING_INDEX('Red,Green,Blue', '-', 1);

Resultado:

Red,Green,Blue

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('Red,Green,Blue', ',', 10);

Resultado:

Red,Green,Blue

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('Red and green and blue', 'AND', 2);

Resultado:

Red and green and blue

Obtenemos toda la cadena en su totalidad.

Caso correcto

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

SELECT SUBSTRING_INDEX('Red and green and blue', 'and', 2);

Resultado:

Red and green