可以使用 SUBSTRING_INDEX 函数来实现。
示例代码:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('abc,def,ghi', ',', -2), ',', 1); -- 返回 'ef'
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('abc,def,ghi', ',', -3), ',', 1); -- 返回 'def'
解释:
- SUBSTRING_INDEX(str, delim, n):返回字符串 str 在第 n 次出现分隔符 delim 前的子串。若 n 为正数,则从左往右查找;若 n 为负数,则从右往左查找。
- 在本例中,先用第一个 SUBSTRING_INDEX 函数取出以倒数第二个逗号为分隔符的子串,再用第二个 SUBSTRING_INDEX 函数取出其中以第一个逗号为分隔符的子串,即为倒数第二个字符。同理,用第一个函数取出以倒数第三个逗号为分隔符的子串,再用第二个函数取出其中以第一个逗号为分隔符的子串,即为倒数第三个字符。