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