2017-02-27 67 views
0

我有一個與oracle sql正則表達式函數有關的問題。Oracle正則表達式在一個系列中至少有「1」匹配

我有一系列的零和一。它可以改變爲:

例:

1111000 
000001 
0101111 
10000 

如果在此係列的至少一個「1」,那麼我想爲「1」 否則欲OUPUT「0」輸出。所以,我想是這樣的:

SELECT REGEXP_REPLACE('1,1,1,0','[0,]||[1]+','') FROM DUAL 

然而,這只是輸出「1」出一系列不包括「0」

所以我的問題:我如何才能在的Oracle SQL實現這一目標?

+0

的In y例如,如果字符串'1,1,1,0'被視爲單個「序列」,因此返回'1'或作爲序列列表,返回'1,1,1,0'? – Aleksej

+0

字符串「1,1,1,0」被視爲一個單一的「序列」,它應該返回我1因爲它satiesfies「至少一個‘1’,」規則@Aleksej – gobo

回答

3

如果我沒有理解好,你只需要檢查一個字符串是否包含「1」或沒有,你可能不需要正則表達式和INSTR可能是不夠的:

select case 
     when instr(yourString, '1') = 0 
      then '1 is not in the string' 
      else '1 is in the string' 
     end 
from dual 
+0

謝謝@aleksej! – gobo

0

`喜歡%1%」將工作你也......

with dt as (
select '00000000' seq from dual union all 
select '00011000' seq from dual) 
select 
    seq, 
    case when seq like '%1%' then 1 else 0 end as res 
from dt; 

SEQ    RES 
-------- ---------- 
00000000   0 
00011000   1 
0

後來我也想通了,這也爲我工作:

SELECT 
    REGEXP_REPLACE('MY_STRING' , '.?+1?[0,]', '') as COLUMN_NAME 
    FROM dual; 
相關問題