Регулярка заменить символ на 0

Рейтинг: 1Ответов: 1Опубликовано: 16.01.2023
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

Ответы

▲ 3

Если бы вы были чуть внимательней, то увидели бы что ваш пример все же меняет исходную строку. Только он меняет первое вхождение.

Собственно этот момент и описан в документации. Написано что меняется первая подстрока, попадающая под условие. Если же нужно поменять все, то нужно использовать флаг g

Вот такой пример работает:

select REGEXP_REPLACE('007.12.22-02:08:02', '[^0-9]', '0', 'g')