@Marc B war nah dran. In MySQL gibt die folgende Anweisung 12 zurück:
SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;
In Anbetracht einer möglichen Verwendung des Werts extrahiert die folgende Anweisung den linken Teil der Zeichenfolge vor dem letzten Unterstrich (d. h. _):
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));
Das Ergebnis ist "first_middle". Wenn Sie das Trennzeichen einschließen möchten, verwenden Sie:
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);
Es wäre schön, wenn sie LOCATE erweitern würden, um eine Option zu haben, die Suche von rechts zu starten.
Wenn Sie den rechten Teil der Zeichenfolge nach dem letzten Leerzeichen möchten, ist eine bessere Lösung:
SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);
Dies gibt "last" zurück.