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 |
| 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.