Problema:
Você deseja extrair uma substring do texto em uma determinada coluna.
Exemplo:
Nosso banco de dados tem uma tabela chamada
web_address com dados nas colunas id e address . Queremos remover o 'www. ' no início e o '.com ' no final de cada address . | id | endereço |
|---|---|
| 1 | www.exemplo.com |
| 2 | www.google.com |
| 3 | www.learnsql.com |
Solução 1:
Para remover os primeiros 4 caracteres:
SELECT SUBSTR(address, 5, LENGTH(address) -4) AS substring FROM web_address;
Para remover os últimos 4 caracteres:
SELECT SUBSTR(address, 1, LENGTH(address) -4) AS substring FROM web_address;
Para remover os primeiros 4 caracteres e os últimos 4 caracteres:
SELECT SUBSTR(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Solução 2:
Para remover os primeiros 4 caracteres:
SELECT SUBSTRING(address, 5, LENGTH(address)) AS substring FROM web_address;
Para remover os últimos 4 caracteres:
SELECT SUBSTRING(address, 1, LENGTH(address) -4) AS substring FROM web_address;
Para remover os primeiros 4 caracteres e os últimos 4 caracteres:
SELECT SUBSTRING(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Solução 3:
Para remover todos os caracteres antes do segundo '.' da direita:
SELECT SUBSTRING_INDEX(address, '.', -2) AS substring FROM web_address;
Para remover todos os caracteres após o segundo '.' da esquerda:
SELECT SUBSTRING_INDEX(address, '.', 2) AS substring FROM web_address;
Para remover todos os caracteres após o segundo '.' da esquerda, remova todos os caracteres antes do primeiro '.' da direita:
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(address, '.', 2), '.', -1 ) AS substring FROM web_address;
O resultado é:
| substring |
|---|
| exemplo |
| aprendersql |
Discussão:
A primeira e a segunda soluções removem um número especificado de caracteres do texto com o
SUBSTR() ou SUBSTRING() função. SUBSTR() é um sinônimo para SUBSTRING() . Ambos requerem a string e a posição inicial como argumentos. O último argumento, que define o número de caracteres a serem extraídos, é opcional. Se o último argumento for omitido, a string inteira (do ponto inicial) será retornada. Na terceira solução, o
SUBSTRING_INDEX() A função remove o texto antes ou depois dos caracteres especificados. Requer como argumentos a string, o caractere e quantas instâncias do caractere devem ser encontradas até o início da extração de texto.