详细分析Mysql中的LOCATE函数(附Demo)

1. 基本概念

LOCATE()函数在SQL中用于在字符串中查找子字符串的位置

它的一般语法如下:

LOCATE(substring, string, start)

LOCATE()函数返回子字符串在主字符串中第一次出现的位置
如果未找到子字符串,则返回0

具体的参数如下:

  • substring 是要查找的子字符串
  • string 是要在其中查找子字符串的主字符串
  • start 是可选的,表示从主字符串的哪个位置开始搜索
    如果省略,则默认从字符串的开头(位置 1)开始

以下是一个简单的示例:

SELECT LOCATE('is', 'This is a sample string');

在这里插入图片描述

在这个例子中,LOCATE()函数将返回3,因为子字符串 ‘is’ 在主字符串 ‘This is a sample string’ 中第一次出现的位置是第3个字符

2. Demo

注意事项:

  • 如果子字符串出现在主字符串的开头,返回值将是1
  • 如果子字符串不存在,返回值将是0
  • 如果省略了可选的起始位置参数,则从主字符串的开头开始搜索
  • 如果提供了起始位置参数,则从该位置开始搜索

相应的Demo如下:

2.1 无起始位置

找出字符串中的子字符串位置SELECT LOCATE('world', 'Hello world');

结果是7,因为 ‘world’ 在 ‘Hello world’ 中的第7个位置开始

在这里插入图片描述

更细致化一些操作

在这里插入图片描述

代表从第一个开始,找到o的参数在第5个位置

2.2 起始位置

使用起始位置参数SELECT LOCATE('is', 'This is a sample string', n);

SELECT LOCATE('o', 'Hello world', 1);

从第 1 个字符开始搜索 ‘o’ 在 ‘Hello world’ 中的位置,‘o’ 第一次出现的位置是第 5 个字符(‘Hello world’ 的第五个字符是 ‘o’)

对于其他数字的总结如下:

  • 1-5 返回 5:无论 start 参数设置为 1、2、3、4、5,结果都是找到 ‘o’ 的第一个出现位置,即第 5 个字符
    在这里插入图片描述

  • 6-8 返回 8:从第 6 个字符开始搜索,‘o’ 的第一次出现的位置是第 8 个字符(‘Hello world’ 中的第 8 个字符是 ‘o’)
    在这里插入图片描述

  • 9 之后返回 0:从第 9 个字符之后开始搜索,‘o’ 在 ‘Hello world’ 中已经没有更多的出现,结果是 0,表示未找到
    在这里插入图片描述

2.3 检查是否存在

检查子字符串是否存在SELECT IF(LOCATE('apple', 'I like apples') > 0, 'Exists', 'Does not exist');

这将返回 ‘Exists’,因为 ‘apple’ 存在于 ‘I like apples’ 中

在这里插入图片描述

实际应用中,可以根据需要将其与其他SQL函数和条件语句结合使用

3. 实战

对于实战的Demo,可灵活运用
比如用在Java的Mybatis中的Mapper文件中

截图如下:

在这里插入图片描述

对于详细的CRUD以及JAVA知识,推荐阅读:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. 【Java项目】实战CRUD的功能整理(持续更新)
  3. Mybatis从入门到精通(全)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农研究僧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值