我的判断含有非数字或非字母的字符的函数是这样写的,报错了,希望得到解决
createorreplacefunctioncheckNumEng(v_cardinvarchar2)returnvarchar2isi_tempinteger;beg...
create or replace function checkNumEng(v_card in varchar2) return varchar2 is
i_temp integer;
begin
i_temp := v_card;
if(regexp_like(i_temp ,'^([a-z]+|[A-Z]+|[0-9]+)$')) then
return 'Y';
end if;
return 'N';
end checkNumEng;但是报了错误pls-00201:identifier'regexp_like()'must be declared 展开
i_temp integer;
begin
i_temp := v_card;
if(regexp_like(i_temp ,'^([a-z]+|[A-Z]+|[0-9]+)$')) then
return 'Y';
end if;
return 'N';
end checkNumEng;但是报了错误pls-00201:identifier'regexp_like()'must be declared 展开
展开全部
你数据库版本是9i及以下版本吧?9i及以下里没有regexp_like
i_temp 设置的整型,v_card 是字符型,后边你有个赋值,可能会出错,最好都给改成字符型的
i_temp 设置的整型,v_card 是字符型,后边你有个赋值,可能会出错,最好都给改成字符型的
更多追问追答
追问
换了10 还是同样的错误
追答
恩,我给你想个其他的解决办法吧
就是你输入的那个字段可能不包含什么字符,假设不包含@吧
create or replace function checkNumEng
(v_card in varchar2)
return varchar2
is
i_temp varchar2(32767);
begin
i_temp := v_card;
if
translate(i_temp,'1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ','@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@')
like '%@%'
then
return 'Y';
end if;
return 'N';
end checkNumEng;
运行
select checkNumEng('34asfasf') from dual;
括号里是你要查的字段名或者输入的字符串
但是你得保证这个串里不要包含@这个字符,否则
select checkNumEng('@') from dual;这样的话,结果就是不正确的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询