Oracle regexp_replace числа для букв - PullRequest
0 голосов
/ 10 октября 2019

Я думаю, что это должно быть просто, но я не могу придумать, как это сделать, кроме как вложить regexp_replace. Я хочу заменить каждое число соответствующей буквой, например:

regexp_replace(regexp_replace(regexp_replace('147','1','A'),'4','D'),'7','G')

результат:

ADG

, но с оператором списка, подобным этому

regexp_replace('12345','[1234567890]','[ABCDEFGHIJ]')

но, конечно, вместо ADG я получаю

[ABCDEFGHIJ] [ABCDEFGHIJ] [ABCDEFGHIJ] [ABCDEFGHIJ] [ABCDEFGHIJ]

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

Вам не нужны регулярные выражения для этого;вам нужна функция перевода:

select translate('147', '1234567890', 'ABCDEFGHIJ') as translated from dual;

TRANSLATED
-------------
ADG
1 голос
/ 10 октября 2019

Это не может быть легко сделано с REGEXP_REPLACE.

Regex на самом деле не может решить, что заменить, основываясь на том, что ему подходит;обычно это означает, что совпадает, а остальное зависит от того, какой язык программирования вы используете. Возможно, вам удастся использовать это в Python, но, как уже было указано в другом ответе, для Oracle REGEXP_REPLACE - неподходящий инструмент для работы.

...