当前位置: 首页 > 面试题库 >

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

段干茂实
2023-03-14
问题内容

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

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

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

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

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


问题答案:

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



 类似资料:
  • 例如,我们有一个字符串:asd/asd/asd/1#s_ 我需要匹配以下部分:/asd/1#s_或asd/1#s_如何使用普通正则表达式? 我试过像这样的消极前瞻,但它不起作用 它匹配这个“前缀/asd/1#s_”,我需要匹配“/asd/1#s_”中的这个“/asd/1#”,我需要匹配“/asd/1#s_”,而没有所有前面的 /asd/'s 匹配应该与普通正则表达式没有任何编程语言的任何帮助函数h

  • 问题内容: 我想在给定的输入string中找到某个子字符串最后一次出现的位置(或索引)。 例如,假设输入字符串为,子字符串为,则应输出3。 我怎样才能做到这一点? 问题答案: 用途: 另外,请勿将其用作变量名,否则将使内置的阴影变暗。

  • 我对RegEx-es和类似的搜索模式非常缺乏经验,而且我所尝试的每一种方法都不能正常工作(大多数情况下会导致)。 找到字符串中最后一组数字开始的索引的可靠而简单的方法是什么?

  • 本文向大家介绍去除字符串中最后一个指定的字符相关面试题,主要包含被问及去除字符串中最后一个指定的字符时的应答技巧和注意事项,需要的朋友参考一下

  • 说,我有一个字符串: 在这个字符串中,“内容”的位置是已知的。 现在,我想把最里面的div变成span标签。所以我想做的是: 在Java中有什么可以做到这一点吗?或者只是从指定的索引中获取子字符串的上一个和下一个出现的索引? 编辑:忘了指定div有未知的标签(可能有类和东西)和中间可能有东西(像例子中的标签)。

  • 本文向大家介绍MySQL查询从字符串中获取最后三个字符以外的子字符串?,包括了MySQL查询从字符串中获取最后三个字符以外的子字符串?的使用技巧和注意事项,需要的朋友参考一下 为此,您可以将SUBSTR与length()一起使用。 让我们首先创建一个表- 以下是使用insert命令在表中插入一些记录的查询- 以下是使用select命令显示表中记录的查询- 这将产生以下输出- 以下是查询以获取删除最