Как я могу обрезать строку префикса в запросе Oracle SQL? - PullRequest
3 голосов
/ 12 февраля 2010

У меня есть столбец, значения которого состоят из префикса, а затем некоторого значения, например ::100100

ABC-Car
ABC-Dog
ABC-Suit
CBR-Train

В моем запросе я хотел бы обрезать определенные префиксы, например, если я обрежу 'ABC-', это даст мне следующее:

Car
Dog
Suit
CBR-Train

Единственная проблема в том, что все символы действительны для части после префикса. Так что возможно я мог бы иметь:

ABC-ABC-Cat

Я хочу вернуть это усеченное значение:

ABC-Cat

Функции TRIM и LTRIM, похоже, используют сопоставление с образцом / символом, а не однократное сопоставление строк. Есть ли способ выполнить то, что я хочу, с помощью одной из этих функций или с помощью другой встроенной функции?

В настоящее время я думаю, что мне придется использовать оператор CASE, чтобы проверять этот префикс в начале каждого значения и, если он существует, отменить его, иначе вернуть столбец без изменений. Надеюсь, что есть более простой способ.

1 Ответ

5 голосов
/ 12 февраля 2010

regexp_replace - это то, что вы хотите использовать для этого.

Примеры использования:

select regexp_replace('ABC-Car', 'ABC-(.*)','\1') from dual; --returns 'Car'
select regexp_replace('ABC-ABC-Car', 'ABC-(.*)','\1') from dual; --returns 'ABC-Car'
select regexp_replace('ABC-ABC-Car', 'ABC-(.*)','\1') from dual; --returns 'CBR-Train'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...