ORACLE SQL для замены / lpadd '-' на ноль (и) в зависимости от длины целого числа после '-' - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть столбец таблицы в oracle db, где значения варьируются как 4123456-1-2-3, 4123456-11-2-3, 4123456-2-221-3 и т. Д. Требуется найти '-' из значенияи замените / дополните его нулями в зависимости от длины символа / целого числа после '-'.Это означает, что если длина целого числа afer '-' равна 1, то в падд 5 нулей, а если длина целого числа после '-' равна 2, тогда в падд 4 нулей.

Выходные данные должны быть такими, как

1. 4123456-000001-000002-000003
2. 4123456-000011-000002-000003
3. 4123456-000002-000221-000003

Пожалуйста, помогите мне понять, как создать запрос. Я пытаюсь использовать REGEXP_REPLACE и LPAD, но не могу дозвониться до

1 Ответ

0 голосов
/ 24 сентября 2018

Используется комбинация regex_substr() для разделения строки и lpad() для заполнения нулями:

select (regexp_substr(val, '[^-]+', 1, 1) || '-' ||
        lpad(regexp_substr(val, '[^-]+', 1, 2), 6, '0') || '-' ||
        lpad(regexp_substr(val, '[^-]+', 1, 3), 6, '0') || '-' ||
        lpad(regexp_substr(val, '[^-]+', 1, 4), 6, '0')
       )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...