@Marc B był blisko. W MySQL następująca instrukcja zwraca 12:
SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;
Przewidując możliwe użycie wartości, następująca instrukcja wyodrębnia lewą część ciągu przed ostatnim podkreśleniem (tj. _):
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));
Wynik to „first_middle”. Jeśli chcesz dołączyć ogranicznik, użyj:
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);
Byłoby miło, gdyby ulepszyli LOKALIZACJĘ, aby mieć opcję rozpoczęcia wyszukiwania z prawej strony.
Jeśli chcesz umieścić właściwą część ciągu po ostatniej spacji, lepszym rozwiązaniem jest:
SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);
To zwraca „ostatni”.