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

Postgresql 删除Postgres中的前导零和连字符,postgresql,Postgresql,我需要删除Postgresql数据库中列值的前导零和连字符,例如: 121-323-025-000应该看起来像12132325 060579-0001 => 605791 482-322-004=>4823224 非常感谢及时的帮助。 对于更高级的字符串编辑,正则表达式可以非常强大。请注意,不熟悉复杂正则表达式的人可能不会认为它是可维护的 CREATE TABLE testdata (id text, expected text); INSERT INTO testdata (id, exp

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

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

非常感谢及时的帮助。

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

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;
在本例中,我们将查找字符串的开头或连字符作为开始匹配的位置。我们将其后面的任何零作为匹配的一部分。接下来,我们用一个空字符串替换该匹配项。最后,全局标志告诉我们重复搜索,直到到达字符串末尾。

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

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;

在本例中,我们将查找字符串的开头或连字符作为开始匹配的位置。我们将其后面的任何零作为匹配的一部分。接下来,我们用一个空字符串替换该匹配项。最后,全局标志告诉我们重复搜索,直到到达字符串末尾。

您的逻辑不一致。有时删除所有内部零,有时不删除。逻辑不一致。有时删除所有内部零,有时不删除。这正是我要找的。谢谢你的帮助。这正是我要找的。谢谢你的帮助。