Вы можете использовать:
SELECT value AS original,
LTRIM(
REGEXP_REPLACE(
value,
'^((\d+)/(\d+)/(\d+)/)?(\d+)/(\d+)/(\d+)$',
'\2 \3 \4 \5\6\7'
)
) AS formatted
FROM table_name;
Итак, для ваших тестовых данных:
CREATE TABLE table_name ( value ) AS
SELECT '30/60/90/120/150/180' FROM DUAL UNION ALL
SELECT '150/180/210' FROM DUAL;
Это выводит:
ORIGINAL | FORMATTED
:------------------- | :-----------------
30/60/90/120/150/180 | 30 60 90 120150180
150/180/210 | 150180210
db <> fiddle здесь
Обновлено :
Если я правильно понял ваши обновленные требования, у вас есть Числа от 1 до 3 di git в списке с разделителями sla sh, и вы хотите вывести этот список без косой черты, чтобы каждое число заполнялось справа пробелами, чтобы оно всегда заполняло 3 символа.
Вы можете найти каждое число 1-3 di git и добавить к нему два пробела, а затем найти символы не-sla sh и оставить первые 3 в каждой группе (отбрасывая любые дополнительные символы и завершающий sla * 1045). *):
SELECT value AS original,
REGEXP_REPLACE(
REGEXP_REPLACE(
value,
'(\d{1,3})(/|$)',
'\1 /'
),
'([^/]{3})[^/]{0,2}/',
'\1'
) AS formatted
FROM table_name;
для данных примера:
CREATE TABLE table_name ( value ) AS
SELECT '30/60/90/120/150/180' FROM DUAL UNION ALL
SELECT '150/180/210' FROM DUAL UNION ALL
SELECT '90/120/150' FROM DUAL UNION ALL
SELECT '30/60/90' FROM DUAL UNION ALL
SELECT '30/60/90/120' FROM DUAL UNION ALL
SELECT '1/10/100/2' FROM DUAL;
Выходы:
ORIGINAL | FORMATTED
:------------------- | :-----------------
30/60/90/120/150/180 | 30 60 90 120150180
150/180/210 | 150180210
90/120/150 | 90 120150
30/60/90 | 30 60 90
30/60/90/120 | 30 60 90 120
1/10/100/2 | 1 10 1002
дБ <> скрипка здесь