[Oracle] regexp_replace
а чем pl/sql не угодил?
s/^(\d+\d{2}\d{2})$/$1-$2-$3/;
Оракл не знаю, сорри
Хотя это только одна маска, а в описании к функции их две.
это для обеих
Строка остается без изменений.
select
regexp_replace ('1234567', 's/^(\d+\d{2}\d{2})$/$1-$2-$3/') n7_1,
regexp_replace ('1234567', 's/^(\d+\d{2}\d{2})$/$1-$2-$3/', 's/^(\d+\d{2}\d{2})$/$1-$2-$3/') n7_2
from dual;
SELECT REGEXP_REPLACE ('1234567', '(\d+\d{2}\d{2})', '\1-\2-\3')
FROM DUAL;
Честно сказать, не смог воспользоваться твоей подсказкой.почитайте доку хотя бы, там пример есть
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functi...
То, что нужно. Спасибо.
Оставить комментарий
Boris1980
Хочу воспользоваться функцией regexp_replace, но толком не знаю регулярных выражений.Нужно в запросе вывести телефон в удобно читаемом формате.
Т.е. на вход подается строка содержащая номер телефона (без кода страны, города и добавочного нужно расставить дефисы через два-три символа в зависимости от длины номера телефона.
"1234567" -> "123-45-67"
"123456" -> "12-34-56"
и т.д.
У меня какая-то лажа получается, помогите составить маску и маску подмены.