mysql 将一个字符串按某个字符串出现的最后一次位置来拆分成两个字符串

时间:2021-09-28 15:10:43

例如:将rocky_bbs_notes表中的content按<br>=========================================<br>字符串进行分割,并从最后一次出现的位置开始分割。

SELECT * from (SELECT reverse(SUBSTRING(reverse(content),LOCATE('>rb<=========================================>rb<',reverse(content)))) s1,

reverse(SUBSTR(reverse(content) FROM 1 FOR LOCATE('>rb<=========================================>rb<',reverse(content))-1)) s2
from rocky_bbs_notes 

WHERE CONTENT like '%<br>=========================================<br>%') t WHERE t.s1 like '%<br>=========================================<br>%';

实现原理:

1、利用reverse()函数将字符串反过来

2、将反过来的字符串查找第一次出现>rb<=========================================>rb<的位置

3、根据上面得到的位置再利用substring()来截取前面部分和后面部分,最后再利用reverse()反过来就得到了需求的两个字符串。