Oracle, regexp: получить подстроку

0000

Имеются строки вида
AA B CCC DDDD
FF CCC GGGG
Надо получить
AA B CCC
FF CCC
Т.е. отбросить все, что после CCC (заданное заранее и известное слово).
Можно через substr, но через regexp_replace мне кажется покороче будет.
Может кто подсказать, какую именно последовательность символов надо написать?

mbolik1

Может кто подсказать, какую именно последовательность символов надо написать?
regexp_substr(src, '.*CCC')
Но просто substr будет быстрее.

0000

, спасибо.
Быстродействие в данном случае нафиг не нужно. Там всего порядка 100 строк надо обработать. И будет выполняться ETL 0.1с или 2с разницы нет.
Зато с regexp_replace код явно читабельнее будет.

apl13

("\(CCC\).*", "\1")
?

Andbar

Зато с regexp_replace код явно читабельнее будет.
только для тех, кто знаком с синтаксисом regexp'ов... У меня на работе все программисты с ораклом работают, а с регекспами дружат далеко не все, т.к. нечасто приходится их использовать (т.к. код на instr/substr работает быстрее и известен случай, когда переписывали кучу кода с использованием регекспов).

kill-still

некоторые программисты и генерики не понимают, и что - теперь их не использовать? :confused:
Оставить комментарий
Имя или ник:
Комментарий: