2015-10-29 3 views
0

Мне нужен способ обрезать строку в PL/SQL на основе расположения последних запятых в строке. Тем не менее, нет единого формата для входящих строк, и я не могу найти способ эффективно обрезать строку.PL SQL - Обрезка строки продолжается

HU-15-02 | HU, NYI, HAA East (should be trimmed to just HAA East) 
MX-01-05 | MX, 01-05, OFFICES (OFFICES) 
DK-94-02 | DK, ViewCom (VIEWCOM) 

формат код страны, а затем здание ID (если применимо), а затем название здания (которое, что я хочу)

+0

Разделите пространство и возьмите последний элемент в результирующем массиве. См. Http://stackoverflow.com/questions/3710589/is-there-a-function-to-split-a-string-in-plsql –

ответ

0

Получить местоположение последней запятой путем подсчета назад от конца строки, а затем обрезать с запятой плюс пространство вперед

select substr(your_text,INSTR(your_text,',',-1) +2) 
from your_table; 
0

REGEXP_SUBSTR() на помощь:

SQL> with tbl(str) as (
    select 'HU, NYI, HAA East' from dual 
    union 
    select 'MX-01-05 | MX, 01-05, OFFICES' from dual 
    union 
    select 'DK-94-02 | DK, ViewCom' from dual 
    ) 
    select regexp_substr(str, '^.*, (.*)$', 1, 1, null, 1) bldg_name 
    from tbl; 

BLDG_NAME 
----------------------------- 
ViewCom 
HAA East 
OFFICES 

SQL>