我需要检查前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应该是:纯字符串
答案 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