Oracle - разбить строку по запятой и получить последний подстроку - PullRequest
1 голос
/ 10 июня 2019

Я хотел написать запрос Oracle для извлечения только последней подстроки строки, разделенной запятыми, как показано ниже:

DEST = "1,MMA SALAI,ARIANKUPAM,CITY CENTRE,G12 47H"

Меня интересует только G12. Как мне попасть в запрос Oracle?

Спасибо

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Немного из подстроки (см. Комментарии в коде):

SQL> with test (dest) as
  2    (select '1,MMA SALAI,ARIANKUPAM,CITY CENTRE,G12 47H' from dual)
  3  select
  4    regexp_substr(dest,              --> out of the DEST, give me ...
  5                  '\w+',             --> ... the first word that begins right after ...
  6                  instr(dest, ',', 1, regexp_count(dest, ',')) + 1     --> ... postition of the last
  7                 ) result                                              --> comma in the source string
  8  from test;

RESULT
--------------------
G12

SQL>

Или, разделив запятые значения на строки:

SQL> with test (dest) as
  2    (select '1,MMA SALAI,ARIANKUPAM,CITY CENTRE,G12 47H' from dual)
  3  select regexp_substr(col, '\w+') result
  4  from (select regexp_substr(dest, '[^,]+', 1, level) col,  --> split column to rows
  5               row_number() over (order by level desc) rn   --> the last row will be RN = 1
  6        from test
  7        connect by level <= regexp_count(dest, ',') + 1
  8       )
  9  where rn = 1;

RESULT
--------------------
G12

SQL>
1 голос
/ 10 июня 2019

Попробуйте

REGEXP_SUBSTR('1,MMA SALAI,ARIANKUPAM,CITY CENTRE,G12 47H', '[^,]+$')

Но это принесет G12 47H. Вы можете рассмотреть

REGEXP_SUBSTR('1,MMA SALAI,ARIANKUPAM,CITY CENTRE,G12 47H', '([^, ]+)( +[^,]*)?$', 1,1,NULL,1)

Это даст G12.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...