使用regexp_like检查纯字符串

时间:2014-09-10 15:26:44

标签: regex oracle11g

我需要检查前6个字符的"子字符串"纯字符串的输入字符串。

declare
p_str varchar2(30) := 'ABCD1240';
l_result varchar2(20);

begin
if REGEXP_LIKE(substr(p_str,1,6), '[[:alpha:]]') then
        dbms_output.put_line('It is a pure string');
else
        dbms_output.put_line('It is an alphanumeric');
end if; 
end;
/

我可以看到字符串ABCD1290的前6个字符是字母数字,因为它包含12个字符。 但是,打印的输出说不然。

我做错了#34; alpha"在regexp_like? 我认为alpha应该是纯字符而不是数字。 在这里,ABCD1290应该给我:字母数字作为输出。 ABCDXY90应该是:纯字符串

1 个答案:

答案 0 :(得分:0)

试试这个:

declare
  l_res varchar2(100);
begin
  for i in (select 'abcdef123' val from dual union 
            select '123abc123' from dual union
            select '123456abc' from dual)
  loop
    if REGEXP_LIKE(i.val, '^\D{6}')
    then
      l_res := 'alpha';
    else
      l_res := 'numeric';
    end if;
    dbms_output.put_line(i.val || ' is ' || l_res);
  end loop;
end;

123456abc is numeric
123abc123 is numeric
abcdef123 is alpha