我的判断含有非数字或非字母的字符的函数是这样写的,报错了,希望得到解决

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
展开
 我来答
badkano
2013-03-06 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885367
团长

向TA提问 私信TA
展开全部
你数据库版本是9i及以下版本吧?9i及以下里没有regexp_like
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;这样的话,结果就是不正确的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式