快来人啊,急急~!!小问题,近来看看就知道了!!!

hxy1982 2003-08-19 05:37:37
create function is_int(p_time in varchar2)
return number
as
num number;
n number:=0;
begin
num:=length(p_time);
loop
n:=n+1;
for i in 0..9 loop
if instr(substr(p_time,1,n),i)=0 then
return 0;
end if;
end loop;
exit when n=num;
end loop;
return 1;
end;
/

delete from a where is_int(time)=0;
我是想删除time字段中带有英文字符的记录,要得到全是数字的记录
怎么执行了上面这个函数,什么用都没有啊?
执行的结果是把所有的记录都删除了!
问题出在哪里啊??

急死我了~!!快来人啊
...全文
49 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
onejune4450 2003-08-19
  • 打赏
  • 举报
回复
未测试

create function is_int(p_time in varchar2)
return number
as
num number;
n number:=0;
begin
num:=length(p_time);
loop
n:=n+1;
if ascii(substr(p_time,n)) < 48 or ascii(substr(p_time,n)) > 57 then
return 0;
end if;
exit when n=num;
end loop;
return 1;
end;
/
beckhambobo 2003-08-19
  • 打赏
  • 举报
回复
不是已给你改了吗,以下是测试数据:
SQL> select * from bb;

ID FID
-- ----------
1 1
1 23dd

SQL> delete from bb where is_int(fid)=0;

1 row deleted

SQL> select * from bb;

ID FID
-- ----------
1 1

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧