PL/SQL Reg Exp在字符串中找到数字

use*_*821 1 regex oracle

这行应该只检查test_data表中的c1字符串,如果没有数字,那么整个c1字符串将显示在result1列中.我尝试测试这部分是自己的,它似乎不起作用.

有人可以帮忙吗?表和列都是创建的,只是没有提供我需要的结果.结果似乎是随机的:一些带有数字的字符串被插入而一些则没有.

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

Jon*_*ler 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;
Run Code Online (Sandbox Code Playgroud)