如果模式匹配,从字符串中删除最后4位数

时间:2014-07-03 18:05:14

标签: regex postgresql pattern-matching substring

我正在尝试从Postgres中的字符串中删除最后4位数,当且仅当它们匹配某种模式时:[0][1-9][0][1-9]

示例:

1031610101 -> 103161
1234 -> 1234
123456 -> 123456
123405 -> 123405

我已经尝试了一些使用子字符串的方法,但不知何故无法使其工作。 字符串的长度是可变的。

到目前为止,我已经尝试过:

substring(value from '([\d](3,6}[0][1-9][0][1-9])') as "Result"

2 个答案:

答案 0 :(得分:2)

使用regexp_replace()更容易:

SELECT regexp_replace(col, '0[1-9]0[1-9]$', '')
FROM   tbl;

$ ..字符串结尾

答案 1 :(得分:-1)

SELECT SUBSTR('ABCDEFGHIJKLMNOP',1,LENGTH('ABCDEFGHIJKLMNOP') - 4);

语法:SUBSTR('string',from_postion,length)