【问题标题】:Remove last 4 digits from string if pattern matches如果模式匹配,则从字符串中删除最后 4 位数字
【发布时间】:2014-07-03 18:05:13
【问题描述】:

当且仅当它们匹配特定模式时,我试图从 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"

【问题讨论】:

  • 您是否在通过正则表达式匹配或提取字符串时遇到问题?请提供您迄今为止尝试过的代码示例。

标签: regex postgresql pattern-matching substring


【解决方案1】:

regexp_replace() 更容易:

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

$ .. 字符串结束

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 请添加一些描述。
    • 这可以简化为left(col, -4)。更重要的是,它没有回答问题。
    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多