小编典典

MySQL中给定子字符串的最后一个索引

mysql

我们可以使用以下INSTR()函数在MySQL中找到给定子字符串首次出现的索引。

SELECT instr('Have_a_good_day', '_') AS index_position

它会显示5指定子字符串的第一次出现,在此情况下为下划线_

我需要获取给定字符(或子字符串)的最后一次出现,类似于lastIndexOf(String str)String类的Java 方法,但是我找不到MySQL中的任何内置函数。

在MySQL中是否有任何内置功能可实现此目的?


阅读 817

收藏
2020-05-17

共1个答案

小编典典

@马克·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”。

2020-05-17