删除Postgres中的前导零和连字符

时间:2017-09-11 02:34:57

标签: postgresql

我需要从Postgresql数据库中的列值中删除前导零和连字符,例如:

121-323-025-000应该看起来像12132325 060579-0001 => 605791 482-322-004 => 4823224

及时的帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

Postgresql string functions. 对于更高级的字符串编辑,正则表达式可以非常强大。请注意,复杂的正则表达式可能不被那些不熟悉它们的人认为是可维护的。

CREATE TABLE testdata (id text, expected text);
INSERT INTO testdata (id, expected) VALUES
    ('121-323-025-000', '12132325'),
    ('060579-0001', '605791'),
    ('482-322-004', '4823224');
SELECT id, expected, regexp_replace(id, '(^|-)0*', '', 'g') AS computed
  FROM testdata;

How regexp_replace works.在这种情况下,我们会查找字符串的开头或连字符以便开始匹配。作为比赛的一部分,我们包含随后的任何零。接下来,我们用空字符串替换该匹配。最后,全局标志告诉我们重复搜索,直到到达字符串的末尾。