呵呵,回答我那个帖的吧?我还是觉得“立刻死臭”帖出来的代码好,所以给他分了:
下面是他的代码:
create or replace function f_countNumber(str varchar2)
return number
is
f_tmp varchar2(1);
f_pos integer:=1;
f_count integer:=0;begin while f_pos <= length(str) loop
f_tmp := substr(str,f_pos,1);
if (f_tmp between '0' and '9') then
f_count := f_count + 1;
end if;
f_pos := f_pos + 1;
end loop;
return f_count;
end f_countNumber;
下面是他的代码:
create or replace function f_countNumber(str varchar2)
return number
is
f_tmp varchar2(1);
f_pos integer:=1;
f_count integer:=0;begin while f_pos <= length(str) loop
f_tmp := substr(str,f_pos,1);
if (f_tmp between '0' and '9') then
f_count := f_count + 1;
end if;
f_pos := f_pos + 1;
end loop;
return f_count;
end f_countNumber;
名称 空? 类型
----------------------------------------------------- -------- ----------------
--------------------
A VARCHAR2(10)08:57:14 SQL> select * from tt;A
----------
adfd12
3213a已用时间: 00: 00: 00.00
08:57:18 SQL> select translate(a,'a0123456789','a') from tt;TRANSLATE(A,'A012345
--------------------
adfd
a已用时间: 00: 00: 00.15
--
你的函数translate的源码呢?
18:15 SQL> select instr(translate('abc5wef9we','1234567890',' '),' ') pos from dual; POS
-------
4得到字符串中数字总个数
18:39 SQL> select length('abc5wef9we')-length(replace(
18:44 2 translate('abc5wef9we','1234567890',' '),' ','')) num from dual; NUM
-------
218:49 SQL>
translate() replace()是oracle自带的函数
详细信息查阅oracle文档。