MySQL 获取字符串最后一次出现的位置
MySQL 获取字符串最后一次出现的位置方法一:思路:先将字符串反转(reverse),然后用locate查询目标字符的位置,再截取目标字符之前的字符,剩余的字符串长度就是最后一次出现目标字符的位置。注意:此方法仅适用于查询单个字符的最后位置,可以指定开始位置-- Oracleselect instr('zcxvsd1sa','s',-1) FROM dual;-- 8select instr('
·
MySQL 获取字符串最后一次出现的位置
方法一:
思路:先将字符串反转(reverse),然后用locate查询目标字符的位置,再截取目标字符之前的字符,剩余的字符串长度就是最后一次出现目标字符的位置。
注意:此方法仅适用于查询单个字符的最后位置,可以指定开始位置
-- Oracle
select instr('zcxvsd1sa','s',-1) FROM dual; -- 8
select instr('zcxvsd1sa','s',-2) FROM dual; -- 8
select instr('zcxvsd1sa','s',-3) FROM dual; -- 5
-- MySQL
select char_length(substr('zcxvsd1sa',locate('s',reverse('zcxvsd1sa'),1))); -- 8
select char_length(substr('zcxvsd1sa',locate('s',reverse('zcxvsd1sa'),2))); -- 8
select char_length(substr('zcxvsd1sa',locate('s',reverse('zcxvsd1sa'),3))); -- 5
方法二:
思路:通过substring_index()截取目标之后的所有字符,字符位置 = 原有字符长度 - 截取字符长度 - 目标字符长度 + 1。
注意:此方法支持字符串位置查询,但无法指定开始位置
-- Oracle
SELECT instr('www.ccffftech.com.cc.dd','.cc',-1) FROM dual; -- 18
-- MySQL
select char_length('www.ccffftech.com.cc.dd') - char_length(substring_index('www.ccffftech.com.cc.dd','.cc',-1)) - char_length('.cc') + 1; -- 18
方法一与方法二的适用情况刚好相反,请根据具体的需求选择方法。
更多推荐
已为社区贡献4条内容
所有评论(0)