@Marc B was dichtbij. In MySQL retourneert de volgende instructie 12:
SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;
Anticiperend op een mogelijk gebruik van de waarde, extraheert de volgende instructie het linkerdeel van de tekenreeks vóór het laatste onderstrepingsteken (d.w.z. _):
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));
Het resultaat is "first_middle". Als u het scheidingsteken wilt opnemen, gebruikt u:
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);
Het zou leuk zijn als ze LOCATE zouden verbeteren met een optie om de zoekopdracht vanaf de rechterkant te starten.
Als je het rechterdeel van de string na de laatste spatie wilt, is een betere oplossing:
SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);
Dit retourneert "laatste".