2012-04-22 56 views
1

該行應該只檢查test_data表中的c1字符串,如果沒有數字,則在result1列中顯示整個c1字符串。我試圖自己測試這個部分,它似乎沒有工作。PL/SQL Reg Exp在字符串中找到數字

任何人都可以幫忙嗎?表和列都是創建的,只是沒有提供我需要的結果。結果似乎是隨機的:一些帶有數字的字符串被插入,另一些則不被插入。

SELECT case WHEN REGEXP_Instr(c1, '[:digit:]')=0 
      THEN c1 
     end result1 
FROM test_data; 

回答

6

使用[[:digit:]]而不是[:digit:] POSIX字符類僅括號內工作。

SELECT 
    case WHEN REGEXP_Instr(c1, '[[:digit:]]')=0 THEN c1 end result1 
    ,c1 
FROM 
(
    select 'asdf' c1 from dual union all 
    select '1234' c1 from dual union all 
    select 'as1234df' c1 from dual 
) test_data;