Результаты Oracle SQL Select Split

Я пытаюсь создать оператор SQL, чтобы вернуть только часть результата столбца. Я просмотрел SubString и InString, но у меня много проблем с возвратом нужных мне значений.

Пример данных таблицы:

RM123 - N60
RM123 - J44
RM123 - Q24
RM123 - U55-R07 - 1
RM123 - U54-R06 - 1
RM123 - R47-R11 - 1

Мне нужно вернуть данные только после второго пробела и до третьего (могут содержать тире, НЕ будут содержать пробелы в необходимых результатах):

N60
J44
Q24
U55-R07
U54-R06
R47-R11

Эквивалент того, что мне нужно в awk...

$ awk '{print $3}' /tmp/sql.out
N60
J44
Q24
U55-R07
U54-R06
R47-R11

Любая помощь будет оценена по достоинству!


person nvrmore100    schedule 14.08.2012    source источник
comment
Второй пробел в строке вообще или только здесь (например, как насчет '_-', где '_' заменяет пробел)? что ты уже испробовал?   -  person Clockwork-Muse    schedule 15.08.2012
comment
Я не уверен, что полностью понимаю, о чем вы спрашиваете, но в данных столбца не должно быть подчеркивания. Используя пробелы в качестве разделителя, мне нужен третий столбец (между вторым пробелом и третьим пробелом). Я более или менее потерян, поэтому мне нечем поделиться. Вот все, что я начал с использования информации из других вопросов, которые я вижу опубликованными: select SUBSTR(Serial_Number, 1, INSTR(Serial_Number, ' ')-1) AS ouput. Однако в этом случае это обеспечивает только RM123, я не могу разобраться, как получить положение второго пробела и длину данных, между которыми, по-видимому, требуется substr.   -  person nvrmore100    schedule 15.08.2012
comment
Позволяет ли INSTR() указать начальный индекс (#подсказка#). Кроме того, вам может повезти, если вы оберните вещи в некоторые слои CTE, что позволит вам вычислять значения функции только один раз.   -  person Clockwork-Muse    schedule 15.08.2012


Ответы (1)


Нашел решение своего вопроса, поэтому публикую его для других. Вы можете использовать regexp_substr, чтобы решить эту проблему. Вот пример:

select regexp_substr(columnname,'[^ ]+', 1, 3)

Это вернет третий столбец, используя пробелы в качестве разделителей. Все реквизиты идут на эту страницу, которая дала мне подсказку:

http://andrewfraserdba.com/2011/07/13/split-space-delimited-string-with-regexp-sql/

person nvrmore100    schedule 14.08.2012