Регулярка заменить символ на 0
select REGEXP_REPLACE(itcl.number, '[^0-9]+', '0') from itcl;
Я хочу заменить все символы, даже точки и запятые, и тире, и двоеточие на 0.
Если зайти на сайт регулярок и протестить, то выражения '[^0-9]+' более чем достаточно для такой замены.
Но если в postgresql, в поле number записано 007.12.22-02:08:02, то оно таким и остаётся.
Как правильно внести изменения, чтобы в постгре это 007.12.22-02:08:02 превращалось в 007012022002008002
Ответы (1 шт):
Если бы вы были чуть внимательней, то увидели бы что ваш пример все же меняет исходную строку. Только он меняет первое вхождение.
Собственно этот момент и описан в документации. Написано что меняется первая подстрока, попадающая под условие. Если же нужно поменять все, то нужно использовать флаг g
Вот такой пример работает:
select REGEXP_REPLACE('007.12.22-02:08:02', '[^0-9]', '0', 'g')