mysql的类似indexOf方法

SQL中LOCATE函数使用详解
本文深入解析了SQL中的LOCATE函数,包括其基本用法、语法结构、实例演示及常见应用场景。通过具体示例,帮助读者快速掌握如何在字符串中查找子串的位置。

LOCATE(substr,str)
 
返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0.
mysql> select LOCATE('bar', 'foobarbar');
-> 4
mysql> select LOCATE('xbar', 'foobar');
-> 0

详细出处参考:http://www.jb51.net/article/19438.htm

MySQL 中虽然没有直接命名为 `indexOf` 的函数,但提供了多个字符串处理函数可以实现类似的功能。以下是几种常见的方法: 1. **使用 `LOCATE()` 函数** `LOCATE(substring, string)` 用于查找子字符串在目标字符串中的位置,如果找不到则返回 0。该函数等价于 JavaJavaScript 中的 `indexOf` 方法。 ```sql SELECT LOCATE('bar', 'foobarbar'); -- 返回 4 SELECT LOCATE('xbar', 'foobar'); -- 返回 0(未找到) ``` 2. **使用 `INSTR()` 函数** `INSTR(string, substring)` 是另一个功能类似的函数,与 `LOCATE()` 类似,但语法顺序不同,且不支持指定起始位置[^4]。 ```sql SELECT INSTR('foobarbar', 'bar'); -- 返回 4 SELECT INSTR('foobar', 'xbar'); -- 返回 0 ``` 3. **结合自定义函数实现更复杂逻辑** 如果需要实现类似于 `lastIndexOf` 的功能,可以通过创建用户自定义函数来完成。例如,以下是一个通过循环查找最后一次出现子字符串位置的示例函数: ```sql DELIMITER $$ DROP FUNCTION IF EXISTS `lastIndexOf`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `lastIndexOf`(str VARCHAR(100), substr VARCHAR(100)) RETURNS INT BEGIN DECLARE pos INT DEFAULT 0; DECLARE lastPos INT DEFAULT 0; WHILE LOCATE(substr, str, pos + 1) > 0 DO SET lastPos = LOCATE(substr, str, pos + 1); SET pos = lastPos; END WHILE; RETURN lastPos; END$$ DELIMITER ; ``` 调用此函数: ```sql SELECT lastIndexOf('test.file.name', '.'); -- 返回 9 ``` 4. **结合 `SUBSTRING_INDEX()` 实现字段拆分逻辑** 如果目的是提取特定字符前后的部分,而不是获取索引位置,可以使用 `SUBSTRING_INDEX(str, delim, count)` 函数。例如,提取文件名扩展名: ```sql SELECT SUBSTRING_INDEX('test.htm', '.', -1); -- 返回 'htm' SELECT SUBSTRING_INDEX('test.htm', '.', 1); -- 返回 'test' ``` 这些方法可以根据实际需求灵活组合,以实现 `indexOf` 或 `lastIndexOf` 的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值