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

Cómo extraer una subcadena en MySQL

Problema:

Quiere extraer una subcadena del texto en una columna dada.

Ejemplo:

Nuestra base de datos tiene una tabla llamada web_address con datos en las columnas id y address . Queremos eliminar el 'www. ' al principio y el '.com ’ al final de cada address .

id dirección
1 www.ejemplo.com
2 www.google.com
3 www.learnsql.com

Solución 1:

Para eliminar los primeros 4 caracteres:

SELECT
SUBSTR(address, 5, LENGTH(address) -4) AS substring
FROM web_address;

Para eliminar los últimos 4 caracteres:

SELECT
SUBSTR(address, 1, LENGTH(address) -4) AS substring
FROM web_address;

Para eliminar los primeros 4 caracteres y los últimos 4 caracteres:

SELECT
SUBSTR(address, 5, LENGTH(address) -8) AS substring
FROM web_address;

Solución 2:

Para eliminar los primeros 4 caracteres:

SELECT
SUBSTRING(address, 5, LENGTH(address)) AS substring
FROM web_address;

Para eliminar los últimos 4 caracteres:

SELECT
SUBSTRING(address, 1, LENGTH(address) -4) AS substring
FROM web_address;

Para eliminar los primeros 4 caracteres y los últimos 4 caracteres:

SELECT
SUBSTRING(address, 5, LENGTH(address) -8) AS substring
FROM web_address;

Solución 3:

Para eliminar todos los caracteres antes del segundo '.' desde la derecha:

SELECT
SUBSTRING_INDEX(address, '.', -2) AS substring
FROM web_address;

Para eliminar todos los caracteres después del segundo '.' desde la izquierda:

SELECT
SUBSTRING_INDEX(address, '.', 2) AS substring
FROM web_address;

Para eliminar todos los caracteres después del segundo '.' desde la izquierda, elimine todos los caracteres antes del primer '.' desde la derecha:

SELECT
SUBSTRING_INDEX(
	SUBSTRING_INDEX(address, '.', 2),
	'.',
	-1
) AS substring
FROM web_address;

El resultado es:

subcadena
ejemplo
google
aprender sql

Discusión:

Tanto la primera como la segunda solución eliminan un número específico de caracteres del texto con SUBSTR() o SUBSTRING() función. SUBSTR() es un sinónimo de SUBSTRING() . Ambos requieren la cadena y la posición inicial como argumentos. El último argumento, que define el número de caracteres a extraer, es opcional. Si se omite el último argumento, se devolverá la cadena completa (desde el punto de inicio).

En la tercera solución, SUBSTRING_INDEX() La función elimina el texto antes o después de los caracteres especificados. Requiere como argumentos la cadena, el carácter y cuántas instancias del carácter se deben encontrar donde comienza la extracción del texto.