@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);
这会返回“last”。