Регулярные выражения, безусловно, мое слабое место. Я пытаюсь разбить следующие строки
Node 51 Path 1 Route 4
Node 51A Path 12 Route 3
Node 5 Path 12 Route 2
Node 7B Path 1 Route 1
Что мне нужно, так это Узел, буква Узла, Путь и Маршрут.
У меня возникли проблемы с извлечением буквы узла. Буква узла — это одиночный нецифровой символ, который всегда будет следовать за номером узла без пробелов.
для рядов 2 и 4
Node 51A Path 12 Route 3 - Nodes letter is A
Node 5 Path 12 Route 2 - Nodes letter is NULL
Node 7B Path 1 Route 1- Nodes letter is B
Слишком далеко ,
with gen as (
select 'Node 51 Path 1 Route 4' x from dual union all
select 'Node 51A Path 12 Route 3' x from dual union all
select 'Node 5 Path 12 Route 2' x from dual union all
select 'Node 7B Path 1 Route 1' x from dual
)
select x ,
regexp_substr(x, '(\d+)',1,1) as Node ,
regexp_substr(x, '(\d+)',1,2) as Path ,
regexp_substr(x, '(\d+)',1,3) as Route
from gen
X NODE PATH ROUTE
------------------------ ------ ------ -------
Node 51 Path 1 Route 4 51 1 4
Node 51A Path 12 Route 3 51 12 3
Node 5 Path 12 Route 2 5 12 2
Node 7B Path 1 Route 1 7 1 1
Оракул 10gR2.