我需要从Postgresql数据库中的列值中删除前导零和连字符,例如:
121-323-025-000应该看起来像12132325 060579-0001 => 605791 482-322-004 => 4823224
及时的帮助将非常感激。
答案 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.在这种情况下,我们会查找字符串的开头或连字符以便开始匹配。作为比赛的一部分,我们包含随后的任何零。接下来,我们用空字符串替换该匹配。最后,全局标志告诉我们重复搜索,直到到达字符串的末尾。