@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);
这将返回“最后一个”。