Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como extrair uma substring no MySQL

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