Mysql
 sql >> Base de données >  >> RDS >> Mysql

Dernier index d'une sous-chaîne donnée dans MySQL

@Marc B était proche. Dans MySQL, l'instruction suivante renvoie 12 :

SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;

Anticipant une utilisation possible de la valeur, l'instruction suivante extrait la partie gauche de la chaîne avant le dernier trait de soulignement (c'est-à-dire _) :

SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));

Le résultat est "premier_milieu". Si vous souhaitez inclure le délimiteur, utilisez :

SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);

Ce serait bien s'ils amélioraient LOCATE pour avoir une option pour démarrer la recherche à partir de la droite.

Si vous voulez la partie droite de la chaîne après le dernier espace, une meilleure solution est :

SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);

Cela renvoie "dernier".