截取字符串一般用 substring 就够用了。对于有些长度不定的就没法用这个函数了,但还是有规律的,可以某个字符分割。
-- 字符串被分成3部分,取最后一部分,那最后一个参数就是3
select split_part('aa-bb-cc' ,'-', 3)
-- 获取最后一部分内容
select split_part('aa-bb-cc' ,'-', (length('aa-bb-cc') - length(replace('aa-bb-cc','-','')) + 1)); -- result:cc
-- 获取第一部分的内容
select SUBSTRING('aa-bb-cc' ,1,position('-' in 'aa-bb-cc') - 1); -- result:aa
-- 补充:SUBSTRING函数下标从1开始
select SUBSTRING('abcd',2); -- result:bcd 表示从下标从2开始截取到末尾
select SUBSTRING('abcd',1,2); -- result:ab 表示从下标从1开始,截取2个字符