Заменить символы с нулями заполнения - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть таблица со значениями:

100-1234-5
100-0004567-00
300-122334556-87

, и мне нужно заменить первый da sh (-) нулями, чтобы общая длина составляла ровно 18 символов, и вставить его обратно в базу данных:

1000000000000123-45
1000000000004567-00
3000000122334556-87

Если это невозможно, возможно, сделайте то же самое, используя grep

Ответы [ 2 ]

3 голосов
/ 26 апреля 2020

Мне нужно заменить первый da sh (-) на нули, чтобы общая длина была ровно 18

. Вы можете деконструировать строку, а затем собрать ее обратно :

select (regexp_substr(str, '[^-]+', 1, 1) || 
        rpad('0', 19 - length(str), '0') ||
        regexp_substr(str, '[^-]+', 1, 2) || '-' ||
        regexp_substr(str, '[^-]+', 1, 3)
       )
from t;

Обратите внимание, что это возвращает результаты, которые вы описываете , а не результаты, приведенные в вопросе - я предполагаю, что у вас есть опечатка.

Здесь - это дБ <> скрипка

. Это легко включить в update:

update t
    set str = (regexp_substr(str, '[^-]+', 1, 1) || 
               rpad('0', 19 - length(str), '0') ||
               regexp_substr(str, '[^-]+', 1, 2) || '-' ||
               regexp_substr(str, '[^-]+', 1, 3)
              );
0 голосов
/ 27 апреля 2020

Попробуйте ниже, если это поможет

     Select 

        RPAD(
         SUBSTR(INSTR(String, '- 
            '),INSTR(String, '-')), '0'
        18-Length(String)) 


    FROM TABLE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...