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

Último índice de uma determinada substring no MySQL


@Marc B estava perto. No MySQL, a seguinte instrução retorna 12:
SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;

Antecipando um possível uso do valor, a instrução a seguir extrai a parte esquerda da string antes do último sublinhado (ou seja, _):
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));

O resultado é "first_middle". Se você quiser incluir o delimitador, use:
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);

Seria bom se eles aprimorassem o LOCATE para ter uma opção para iniciar a pesquisa pela direita.

Se você quiser a parte certa da string após o último espaço, uma solução melhor é:
SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);

Isso retorna "último".