@Marc B беше близо. В MySQL следният оператор връща 12:
SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;
Предвидявайки възможна употреба на стойността, следното изявление извлича лявата част на низа преди последното долно подчертаване (т.е. _):
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));
Резултатът е "first_middle". Ако искате да включите разделителя, използвайте:
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);
Би било хубаво, ако подобрят LOCATE, за да имат опция за започване на търсенето отдясно.
Ако искате дясната част от низа след последния интервал, по-добро решение е:
SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);
Това връща "последно".