2013-01-22 61 views
1

如果輸入字符串的格式爲字符串#字符串字符串#字符串,字符串#字符串在那裏字符串可以有任意數量的大寫字母字母表,下劃線,那麼它應該返回Y否則它應該返回正則表達式表達

如何在PL/SQL中使用正則表達式只在單個SQL查詢中完成?
(PS不使用PL/SQL程序/功能)

實施例: - 如果輸入字符串爲「CASISA#Y」「INVOPT#LUMREG; LUMSUM#2000; REGSUM#8000」,一個'Y'應該返回,否則返回'N'。 注 - 請不要構建PL/SQL過程來完成此操作,而應該只是一個使用oracle正則表達式函數的SQL。 *

+0

你能澄清你的問題一點點?提供一個示例字符串並指出您嘗試匹配的子字符串。你已經嘗試了什麼? – woemler

+0

plsql再次檢查問題我已添加示例 – user2001117

+0

Oracle的版本是什麼? –

回答

2

您可以使用regexp_like正則表達式函數來實現期望的結果:

with t1(col) as(
    select 'CASISA#Y'        from dual union all 
    select 'INVOPT#LUMREG;LUMSUM#2000;REGSUM#8000' from dual union all 
    select 'CASISA#Y;'        from dual union all -- extra data 
    select 'INVOPT#LUMREG;LUMSUM#2000;#8000'  from dual   -- extra data 
) 
select col 
    , case 
     when regexp_like(col, '^(\w+#\w+;)*(\w+#\w+){1}$') 
     then 'Y' 
     else 'N' 
     end as "Y/N" 
    from t1 

結果:

COL          Y/N 
-------------------------------------------------- 
CASISA#Y         Y 
INVOPT#LUMREG;LUMSUM#2000;REGSUM#8000  Y 
CASISA#Y;         N 
INVOPT#LUMREG;LUMSUM#2000;#8000    N 

SQLFiddle example