update 表名 set 字段= REVERSE(SUBSTR(REVERSE(字段) , INSTR(REVERSE(字段),'关键字')+1))where 条件
所遇情况:当时遇到了需要删除后缀名的需求,但字符串中可能存在多个关键字(如xxx.xxx.xx.doc),所以想到了用substring,但substring无法满足删除后缀名的需求,参考了多篇文章后,通过reverse和查找关键字出现次数实现
参考文章:(9条消息) MySql 截取某个字符最后一次出现位置之前的字符串和之后的字符串_庆.Gavino的博客-CSDN博客_mysql instr最后一次
(9条消息) 【MySQL】字符串截取之substring_index_我的城市没有海~的博客-CSDN博客
ps:
SUBSTRING_INDEX(str,delim,count)
如果count为正数则返回最后分隔符左边的所有内容(从左边计数)。如果count为负,则返回最后分隔符右侧的所有内容(从右开始计数)。