mysql语句locate与substring联合使用方法

一、应用场景

假设数据库有这样的数据:

1_1_xiao_ming
2_22_zhang_mou_mou
3_333_qian_x_s

在这里插入图片描述

现在需要把第2个下划线后的数据查询出来;
如果只用substring_index,较难实现;
此时可以联合使用locatesubstring实现,样例sql如下:

select

substring(test,LOCATE('_',test,3)+1),
substring_index(test,'_',-2)

from ttt;

在这里插入图片描述

这里做了下对比,可以看到,如果只用substring_index,由于无法确定后面有多少个_,所以不太行,查到的姓名不全;
而联合使用locatesubstring,就可以实现需求,把第2个下划线后的数据查询出来。

二、详细说明

1.locate用法

样例1:

LOCATE('_',test)

这个意思是,返回test字段中、首次出现的’_'的位置下标。

样例2:

LOCATE('_',test,3)

这个意思是,返回test字段中、从第3个位置以后的、第一个出现的’_'的位置下标。
上方样例中,第一个'_'出现的位置一般是第2位,但是第二个'_'出现的位置就不固定了,所以需要用locate,找到第二个'_'出现的位置。

2.substring用法

样例1:

substring(test,LOCATE('_',test,3)+1)

这个意思是,返回test字段中、从第3个位置后出现的第一个'_'的位置+1、到最后为止的内容。
上方样例中,就是用这个查询到第2个下划线后的数据的。

样例2:

substring(test,3,1)

这个意思是,返回test字段中、从第3个位置开始、长度为1的内容。

3.substring_index用法

样例1

substring_index(test,'_',-2)

这个的意思是,返回test字段中、按照'_'分隔、倒数第2个'_'开始、到末尾的内容。
上方样例中,倒数第2个下划线开始到末尾的内容,不能符合要求。

样例2

substring_index(test,'_',2)

这个的意思是,返回test字段中、按照'_'分隔、从开始到正数第2个'_'之间的内容。
上方样例中,这样也不符合要求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: MySQL中的LOCATE()函数是用于查找一个字符串在另一个字符串中的位置。它返回第一个字符串在第二个字符串中出现的位置,如果第一个字符串没有在第二个字符串中出现,则返回0。该函数的语法如下: ``` LOCATE(substring, string, position) ``` 其中,substring表示要查找的子字符串,string表示要在其中查找的字符串,position可选,表示从哪个位置开始查找,默认为1。 举例来说,如果我们要查找字符串"world"在"Hello world!"中的位置,可以使用如下语句: ``` SELECT LOCATE('world', 'Hello world!'); -- 返回值为7 ``` 这表示"world"在"Hello world!"中的第7个字符位置出现。 ### 回答2: MySQLLOCATE函数是一种用于在字符串中查找子字符串的函数。它的语法为:LOCATE(substr, str, pos)。 其中,substr是要查找的子字符串,str是要在其中查找的字符串,pos是指定开始查找的位置。如果pos省略,则默认从字符串的开头开始查找。 LOCATE函数返回子字符串在原字符串中第一次出现的位置。如果子字符串不存在,则返回0。 举个例子,假设我们有一个字符串"Hello World",我们想查找子字符串"World"在其中的位置。我们可以使用LOCATE函数来实现:SELECT LOCATE('World', 'Hello World')。 这个查询将返回7,即子字符串"World"在字符串"Hello World"中的位置。 此外,LOCATE函数还可以用于在查询中进行模式匹配。例如,我们可以使用通配符来查找以特定字符开头或结尾的字符串。比如,SELECT * FROM 表名 WHERE LOCATE('a%', 列名) != 0将返回以字母"a"开头的所有行。 总的来说,MySQLLOCATE函数是一个强大的字符串查找函数,可以用于在字符串中快速定位子字符串,并在查询中进行模式匹配。 ### 回答3: MySQLLOCATE函数用于在字符串中查找指定子字符串的位置。它的语法如下: LOCATE(substr, str, pos) 其中,substr是要查找的子字符串,str是要搜索的字符串,pos是可选的起始位置,默认为1。 该函数的返回值是指定子字符串在字符串中的起始位置。如果找到了子字符串,则返回其位置;如果没有找到,则返回0。 下面是一个例子: 假设有一个字符串 'Hello World',我们想查找子字符串 'World' 的位置。我们可以使用以下查询: SELECT LOCATE('World', 'Hello World'); 这将返回数字 7,表示子字符串 'World' 在字符串 'Hello World' 中的起始位置是7。 如果我们想在字符串的第4个位置之后开始搜索子字符串,我们可以使用以下查询: SELECT LOCATE('World', 'Hello World', 4); 结果仍然是 7。 需要注意的是,LOCATE函数是区分大小写的。如果要进行不区分大小写的搜索,可以使用LOWER函数将字符串转换为小写,并在其上应用LOCATE函数。 总结来说,MySQLLOCATE函数是一个很有用的字符串函数,它能够帮助我们在字符串中查找指定子字符串的位置。通过指定起始位置,我们可以灵活地控制搜索的范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想永不停

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值