2016-09-15 78 views
-1

從分隔字符串獲取特定子我在SQL字符串作爲需要在SQL

1|208080|"20170815|00:00:00"|"20160615|23:59:59 

我只需要在SQL

+1

是否總是在第二個'|'後面?你還在使用哪個DBMS? – Nebi

+1

真的很糟糕的想法,以存儲這樣的數據...希望你現在正在修復它! – jarlh

+0

@Nebi:Ya總是在第二個後面,正在使用的軟件是Oracle SQL開發人員 –

回答

0

這個正則表達式SELECT語句獲取值20160615如果它們存在於列表中,則處理NULL元素,並且只抓取第5個管道分隔字段中的數字(雙引號看起來像一個錯字,但你永遠不知道)。它非常靈活,所以你可以得到任何你想要的領域,只需將通話中的'5'替換爲你想要的領域。

SQL> with tbl(str) as (
    select '1|208080|"20170815|00:00:00"|"20160615|23:59:59' 
    from dual 
    ) 
    select regexp_substr(str, '(\d*?)(\||$)', 1, 5, NULL, 1) field5 
    from tbl; 

FIELD5 
-------- 
20160615 

SQL>