У меня есть ниже запрос, который я хотел бы изменить.
Я хочу суммировать все числа, встречающиеся в строке, с условием, что она объединяется с текстом ГБ или МБ.
Если он указан в ГБ, его сначала нужно преобразовать в MB. ( Это я сделал просто умножением на 1024 )
SELECT /*+ PARALLEL */
'SOME TEXT 20GB+2GB+SOMETEXT' SOMETEXT,
CASE
WHEN REGEXP_SUBSTR('SOME TEXT 20GB+2GB+SOMETEXT','GB',1,1) = 'GB'
THEN 1024*to_number(regexp_replace(REGEXP_SUBSTR('SOME TEXT 20GB+2GB+SOMETEXT','(\d+)GB',1,1), '[^0-9]', ''))
ELSE to_number(regexp_replace(REGEXP_SUBSTR('SOME TEXT 20GB+2GB+SOMETEXT','(\d+)MB',1,1), '[^0-9]', ''))
END TOTAL_MBs
FROM DUAL;
ТЕСТОВЫЕ СТРОКИ
TEXT TEXT_35MB+ MORETEXT
OTHERTEXT 480MB + 3MB AND_TEXT
SOMETEXT 7MB + 7NUMBER
TEXT 1GB AND SOME_TEXT
SOME TEXT 20GB+2GB+SOMETEXT
Вот где я застрял: Чтобы добавить числа, встречающиеся более одного раза, в один текст
Например: -
Для этого текста OTHERTEXT 480MB + 3MB AND_TEXT
Я хочу, чтобы мой результат имел 483
в качестве TOTAL_MBS, а не 480
