![][1] Разработчик Oracle, часто использующий в коде [регулярные выражения][2], особенно на базах с православными настройками, рано или поздно может столкнуться с явлением, которое, кроме как мистикой, никак не назовешь. Длительные поиски причин возникновения проблемы могут привести к потере веса, аппетита и спровоцировать различного рода психосоматические расстройства — все это я сейчас и попробую предотвратить. А поможет мне в этом функция regexp\_replace. Она может иметь до 6 аргументов: **REGEXP\_REPLACE** (
1. исходная\_строка,
2. шаблон,
3. заменяющая\_строка,
4. позиция начала поиска совпадения с шаблоном (по умолчанию 1),
5. номер вхождения шаблона в исходную строку (по умолчанию 0 – все вхождения),
6. модификатор (пока что темная лошадка)
) Возвращает измененную исходную\_строку, в которой все вхождения шаблона заменены значением, переданным в параметре заменяющая\_строка. Зачастую пользуются короткой версией функции, где заданы 3 первых аргумента, что бывает достаточно для решения многих задач. Я тоже так сделаю. Допустим, нам нужно в строке 'MASK: lower case' замаскировать все строчные символы звездочками. Для задания диапазона строчных символов должен подойти шаблон '[a-z]'. Проверяем
select regexp_replace('MASK: lower case', '[a-z]', '*') as result from dual
Ожидание
+------------------+
| RESULT |
+------------------+
| MASK: ***** **** |
+------------------+
Реальность
+------------------+
| RESULT |
+------------------+
| *A**: ***** **** |
+------------------+
Если на вашей базе это явление не воспроизвелось, значит вам пока повезло. Но чаще начинаются копания в кодировках, конвертации строк из одного набора символов в другой и со временем наступает примерно такое состояние [Читать дальше →][3]
[1]:
https://habrastorage.org/files/01b/768/4f4/01b7684f4e9848379102b3c798272fea.jpg
[2]:
http://docs.oracle.com/database/121/ADFNS/adfns_regexp.htm#ADFNS9999
[3]:
http://habrahabr.ru/post/269387/#habracut