2013-09-02 2 views
1

У меня есть строка, как этот:вставки между числами с использованием Oracle

2068414199308820683392068279206867820687022068646

Я хочу, чтобы вставить символ запятой после каждой седьмой позиции.

Как это сделать?

Нужный результат выглядит так:

Output 
====== 
2068414,1993088,2068339,2068279,2068678,2068702,2068646 

ответ

5

В качестве одного из подходов (Oracle 10g и выше) можно использовать regexp_replace() регулярной функции выражения, чтобы получить желаемый результат:

SQL> with t1(col) as(
    2 select '2068414199308820683392068279206867820687022068646' from dual 
    3 ) 
    4 select rtrim(regexp_replace(col, '([[:digit:]]{7})', '\1,'), ',') as res 
    5 from t1 
    6 ; 

Результата :

res 
------------------------------------------------------- 
2068414,1993088,2068339,2068279,2068678,2068702,2068646 

Как я могу обновить это значение в таблицу клиента

update your_table_name 
    set col_name = rtrim(regexp_replace(col_name 
             , '([[:digit:]]{7})' 
             , '\1,') 
         , ',') 
-- where clause if needed 
+0

Спасибо так много. Он работает, как я могу обновить это значение для клиента таблицы. – user2176150

+0

@ user2176150 Вы можете использовать простой оператор 'update', назначающий результат' rtrim (regexp_replace()) 'в столбец c, который вы хотите обновить. Ответ обновлен. –

Смежные вопросы