Как удалить — при чтении строковых значений справа налево

#oracle11g #regexp-replace

#oracle11g #регулярное выражение-заменить

Вопрос:

Я создаю новый столбец на основе большинства правильных значений из существующих значений ABP-1-3-3 CBP-1-10-12-14

Выставленные значения для нового столбца, которые я могу прочитать слева, значения, которые я получаю

-3
14

введите описание изображения здесь

Как я могу изменить приведенный ниже код с помощью regexp replace, чтобы удалить любой — ?

SUBSTR(TEST, -2, INSTR(TEST, ‘-‘)-1) КАК TEST2,

Комментарии:

1. Если вы используете python, вам просто нужно разделить его на — и принять -1 почему вы хотите использовать regex для этого?

2. Извините, я не упомянул его Oracle 11g

3. Я в замешательстве. является » ABP-1-3-3 CBP-1-10-12-14 » одна строка или две строки? Вы хотите получить значения «3» и «14»?

4. ABP-1-3-3 и CBP-1-10-12-14 это два разных значения. Я получаю -3 и 14. Я хочу 3 и 14.

5. Хорошо, это два разных значения, но находятся ли они в ОДНОЙ строке или в двух строках? Кроме того, формат всегда будет одинаковым?

Ответ №1:

Попробуйте это:

 with test as 
( select 'CBP-1-10-12-14' v1 from dual
  union 
  select 'ABP-1-3-3' v1 from dual
)
select regexp_substr( v1 , '[0-9]*$' )
from test
  

Также взгляните на https://regex101.com/r/bS7hF5/1 . Это аккуратный сайт. Введите строку регулярного выражения, и она «переведет» ее в понятное для человека описание.

Комментарии:

1. Это так.. Большое спасибо.