MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Selecione tudo antes ou depois de um determinado caractere no MariaDB


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

Esta função aceita três argumentos; a string, o delimitador e o número de ocorrências desse delimitador a ser usado para determinar a substring a ser retornada.

Exemplos


Podemos ver como a função funciona nos exemplos a seguir.

Selecionar tudo antes


Para selecionar tudo antes de um determinado caractere, faça do terceiro argumento um valor positivo:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 2);

Resultado:
Red,Green

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

Eu usei uma vírgula nesse exemplo, mas poderia ter sido qualquer caractere ou string:
SELECT SUBSTRING_INDEX('Red or Green or Blue', ' or ', 2);

Resultado:
Red or Green

Selecionar tudo depois


Use um valor negativo para selecionar tudo depois de um determinado caractere:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', -2);

Resultado:
Green,Blue

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

Quando o delimitador não é encontrado


Se o delimitador não for encontrado na string, a string será retornada por completo.

Exemplo:
SELECT SUBSTRING_INDEX('Red,Green,Blue', '-', 1);

Resultado:
Red,Green,Blue

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('Red,Green,Blue', ',', 10);

Resultado:
Red,Green,Blue

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('Red and green and blue', 'AND', 2);

Resultado:
Red and green and blue

Obtemos toda a cadeia na íntegra.

Caso correto


Agora, aqui está o mesmo exemplo, mas onde o caso corresponde:
SELECT SUBSTRING_INDEX('Red and green and blue', 'and', 2);

Resultado:
Red and green