Выбранное разделенное значение в оракуле

У меня есть два столбца A, B в оракуле, где значение A имеет такие значения, как xx-target-xx xx любые данные, но цель существует

A 
--------
xx-target-xx
xx-target

мне нужно вернуть только "цель" из текста я устал от этого

select TRIM(substr(A, 0, instr(A, '-') - 1))  from mytable

но результат возвращает xx не target

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте REGEXP_SUBSTR. Вам нужна вторая строка любых символов, кроме знака минус:

select a, regexp_substr(a, '[^-]+', 1, 2) from mytable;

Использование вместо них INSTR и SUBSTR немного сложнее, но, конечно, возможно:

select a, substr(a,
                 instr(a, '-') + 1,
                 instr(a || '-', '-', 1, 2) - instr(a, '-') - 1
                ) as value
from mytable;

Демо: https://dbfiddle.uk/?rdbms=oracle_18&fiddle=e75b878bbd6300e9207cd698bb3029ec

Другие вопросы по теме