@Marc B byl blízko. V MySQL vrací následující příkaz 12:
SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;
Následující příkaz předvídá možné použití hodnoty a extrahuje levou část řetězce před posledním podtržítkem (tj. _):
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));
Výsledkem je "first_middle". Pokud chcete zahrnout oddělovač, použijte:
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);
Bylo by hezké, kdyby vylepšili LOCATE tak, aby měli možnost zahájit vyhledávání zprava.
Pokud chcete pravou část řetězce za poslední mezerou, je lepší řešení:
SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);
To vrátí "poslední".