instr的用法.谢谢

嗯,说到这个Instr函数,我真的明白了。
记得有一次,我负责一个项目。
那是2 01 5 年的事,当时我们公司在广州。
项目需求是在一长串数字中找到特定的短串数字。

当时我用过Instr函数,我记得是这样写的:Instr(1 , "1 2 3 4 5 6 7 8 9 01 2 3 4 5 6 7 8 9 0", "3 4 5 6 7 ")。
当结果出来的时候,我发现他们实际上是从第一个角色开始的。
我愣了一下,心想这比赛怎么可能是第一个角色就开始的呢?后来我发现默认是从头开始,我什至没有设置开始位置。

还有一次,2 01 7 年,我在北京做一个项目,当时我们要做区分大小写的研究。
当时使用的代码是Instr(1 , "MySQL Database", "database", 0)。
这次,好人直接跑了,直接找到了“数据库”这个词的位置,返回值是4 ,因为它匹配到了第一个字符。

我们来谈谈 Instr 函数的扩展版本。
那是2 02 0年,在杭州的一个项目中,我们必须从字符串的底部开始搜索。
当时使用的是 Instr("1 2 3 4 5 6 7 8 9 ", "4 5 ", -1 , 1 ),这意味着搜索从第四个到最后一个字符开始,查找第一次出现的“4 5 ”。
结果符合预期,返回值为3
总之,这个Instr函数还是比较实用的,但是参数要根据实际情况来设置。
如果参数弄错了,可能就得花时间去排查,尤其是调试大型项目,实在是很头疼,而且要花很多时间。
因此,在使用该功能时,应仔细阅读文档,了解各个参数的含义,以免造成麻烦。

mysql中instr()函数的使用

INSTR() 函数用于查找子字符串在主字符串中首次出现的位置。
返回值是起始索引(从1 开始)。
如果没有找到,则返回 0。

INSTR('helloworld','world') 返回 7 INSTR('helloworld','mysql') 返回 0。

过滤包含特定子字符串的记录: 选择电子邮件,INSTR(email,'gmail') AS 帖子 来自用户 WHERE INSTR(email,'gmail')>0;
提取子串后的内容: 选择电子邮件,SUBSTR(电子邮件,INSTR(电子邮件,'@')+1 ) AS 域 FROM 用户;
注意这种情况: SELECT INSTR(BINARY'HelloWorld','hello') 返回 0。
INSTR() 与 LOCATE() 等效,但参数的顺序不同。
SELECT LOCATE('o','helloworld',5 ) 返回 8
实际应用: 从产品中选择 WHERE INSTR(描述,'折扣')>0;
SELECT 名称, SUBSTR(名称,INSTR(名称,' ')+1 ) AS 姓氏 FROM 客户;
选择 order_id、customer_id FROM order WHERE INSTR(order_notes,'urgent')>0;
INSTR() 比 LIKE 更灵活。