请问如何用replace和translate函数替换所有非数字为空?

dagouaofei 2010-07-19 12:41:52
比如有一个字符串"012-38(3)",我希望结果是"012383",可以用题目中的两个函数完成么?谢谢。
...全文
678 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CatNetMouse 2010-07-21
  • 打赏
  • 举报
回复

--自定义一个函数好了。呵呵
create function fun_getnumeric
(i_strvalue varchar(255)
)
returns int
language sql

begin atomic
declare strlength int;
declare outnumeric int;
declare v_instr varchar(255);
declare v_cpy varchar(255);

declare v_i integer;
declare v_chzchar varchar(2);

set v_instr=ltrim(rtrim(i_strvalue));
set v_i = 1;
set v_chzchar = '';
set v_cpy = '';
while (v_i <= length(v_instr)) do
set v_chzchar = substr(v_instr,v_i,1);
if (ascii(v_chzchar) >= 48 and ascii(v_chzchar) <= 57) then
set v_cpy = v_cpy||v_chzchar;
end if;
set v_i = v_i + 1;
end while;
set outnumeric = int(ltrim(rtrim(v_cpy)));
return outnumeric;
end;

--听说可以用正则表达式的原理!但不会。。也没用过。
雕虫大计 2010-07-19
  • 打赏
  • 举报
回复
translate("012-38(3)",'','-()')
dagouaofei 2010-07-19
  • 打赏
  • 举报
回复
谢谢,不过我的意思是所有非数字字符,上边说的只是举例,还可能有别的非数字字符。

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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