自己写函数:
create or repalce pvInstr(avFld in varchar2)
return number
is
lvLen number(3);
lvNum number(3);
lvChar char(1)
begin
lvLen :=length(avfld);
for lvNum 1..lvLen loop
lvChar :=substr(avFld,lvNum,1)
if ascii(lvChar) < 58 and ascii(lvChar) > 47 then
return lvNum;
end;
end loop;
end; select pvInstr(fld) from tbl;
create or repalce pvInstr(avFld in varchar2)
return number
is
lvLen number(3);
lvNum number(3);
lvChar char(1)
begin
lvLen :=length(avfld);
for lvNum 1..lvLen loop
lvChar :=substr(avFld,lvNum,1)
if ascii(lvChar) < 58 and ascii(lvChar) > 47 then
return lvNum;
end;
end loop;
end; select pvInstr(fld) from tbl;
解决方案 »
- 数据库查询出现空值
- Oracle怎么让两条插入语句同时插入到各子表中
- 删除记录中某些字段记录的语句
- -----高手---帮忙!-我在DOS环境的中用ed这个命令怎么无法写入afiedt.buf????
- 求生成xml的方法
- 性能优化
- 100分求助:: varchar型转换成long型数据库不能使用,急,急,急,急,急
- 备品表的存储过程
- 接触Oracle时间不长,想问一个关于TO_CHAR函数的问题
- 系统有两台数据库服务器,在给表空间添加数据文件时,报ORA-15041: DISKGROUP SPACE EXHAUSTED
- 菜鸟想学用存储过程,求资料下载
- 在同一张表,同一个动作(如 insert after)建立两个不同的行级触发器和表级触发器,请问哪个先执行?
呵呵,我也觉得不太好
--
lg
return varchar2
as
num number;
begin
for i in 1..length(p_code) loop
if substr(p_code,i,1) in (0,1,2,3,4,5,6,7,8,9) then
return substr(p_code,1,i-1);
end if;
end loop;
return p_code;
end;
/