PostgreSQL中按指定连字符位置截取子串的实现方法
PostgreSQL提取指定分隔区间内的字符串
针对你的需求,这里提供两种实用的实现方式:
方法一:利用数组操作
通过将字符串按-分割为数组,再截取目标区间的元素重新拼接:
SELECT array_to_string( string_to_array(col, '-')[4:array_length(string_to_array(col, '-'), 1)-1], '-' ) FROM your_table LIMIT 1;
逻辑说明:
string_to_array(col, '-'):将目标列的字符串按-分割成数组[4:array_length(...) -1]:数组索引从1开始,4对应第三个-后的第一个元素;array_length(...) -1对应倒数第二个-前的最后一个元素(数组长度减1排除最后一个元素)array_to_string(..., '-'):将截取的数组元素用-拼接回字符串
方法二:使用正则表达式匹配
通过正则直接捕获目标区间的内容:
SELECT (regexp_match(col, '^[^-]+-[^-]+-[^-]+-(.*)-[^-]+-[^-]+$'))[1] FROM your_table LIMIT 1;
逻辑说明:
^[^-]+-[^-]+-[^-]+-:匹配开头三个-分隔的片段(.*):捕获第三个-后到倒数第二个-前的所有内容-[^-]+-[^-]+$:匹配倒数两个-分隔的结尾片段regexp_match(...)返回捕获组数组,[1]取第一个捕获的内容
内容的提问来源于stack exchange,提问作者Johnson Anthony
相关产品推荐
相关产品推荐

