题解 | 最后一个匹配上的位置

最后一个匹配上的位置

https://www.nowcoder.com/practice/5e87faefae1946d997be6eb98c2a5359

1、instr函数只能找出第一次出现特定字符串的位置,但该题目要求找出最后一次出现特定字符串的位置;

2、这个时候就需要采用逆向思维,将字符串反转,这样就能找出‘cba’第一次出现的字符串的位置,即c的位置;

3、由此定位出‘abc’最后一次出现的位置:n-反转后第一次出现的位置-1(n为字符串长度);

4、为什么要减1?因为instr会定位到‘cba’第一次出现的位置,即c的位置,用n减去c的位置,则会得到正常排序中b的位置(倒数第一为n,倒数第二为n-1,以此类推),想得到a的位置,需要再减1。

select device_id,char_length(nick_name)-instr(reverse(nick_name),'cba')-1 last_idx,substr(nick_name,char_length(nick_name)-instr(reverse(nick_name),'cba')-1) check_str
from user_submit
where nick_name like '%abc%'
order by device_id desc;

全部评论

相关推荐

xtu大迫杰:偶遇校友,祝校友offer打牌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务