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

Como selecionar tudo antes/depois de um determinado caractere no MySQL – SUBSTRING_INDEX()


Você pode usar o MySQL SUBSTRING_INDEX() função para retornar tudo antes ou depois de um determinado caractere (ou caracteres) em uma string.

Esta função permite que você especifique o delimitador a ser usado, e você pode especificar qual (caso haja mais de um na string).

Sintaxe


Aqui está a sintaxe:
SUBSTRING_INDEX(str,delim,count)

Onde str é a string, delim é o delimitador (do qual você deseja uma substring à esquerda ou à direita) e count especifica qual delimitador (caso haja várias ocorrências do delimitador na string).

Observe que o delimitador pode ser um único caractere ou vários caracteres.


Exemplo 1 – Selecionar tudo à esquerda


Para selecionar tudo antes um determinado caractere, use um valor positivo:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);

Resultado:
Cats,Dogs

Neste exemplo, selecionamos tudo antes da segunda vírgula. Isso é feito usando uma vírgula (, ) como delimitador e 2 como a contagem.

Exemplo 2 – Selecionar tudo à direita


Para selecionar tudo depois um determinado caractere, você precisa usar um valor negativo:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);

Resultado:
Dogs,Rabbits

Observe que o valor negativo significa que ele contará a partir da direita e, em seguida, selecione a substring à direita do delimitador.

E se o delimitador não corresponder?


Se o delimitador não for encontrado na string, a string é simplesmente retornada por completo.

Exemplo:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);

Resultado:
Cats,Dogs,Rabbits

Neste caso, a string inteira é retornada por completo porque usamos um hífen (- ) como delimitador, mas não havia hífens na string.

Teríamos o mesmo resultado se a string não contém o delimitador, mas nosso count excede o número de delimitadores na string.

Exemplo:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);

Resultado:
Cats,Dogs,Rabbits

Sensibilidade a maiúsculas e minúsculas


O SUBSTRING_INDEX() A função executa uma pesquisa com distinção entre maiúsculas e minúsculas para o delimitador. Ou seja, o delimitador precisa ser o caso correto antes de corresponder.

Caso incorreto


Aqui está um exemplo em que o caso não corresponde:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);

Resultado:
Cats and Dogs and Rabbits

Obtemos toda a cadeia na íntegra.

Caso correto


Agora, aqui está o mesmo exemplo, mas onde o caso corresponde:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);

Resultado:
Cats and Dogs