中文数字转阿拉伯数字 oracle函数

ff_1211 2009-11-10 04:02:03

需要写个oracl函数,实现将中文数字转阿拉伯数字。。

例子:

现在我需要将数据表A中的aa字段”三室一厅“字符串,变成3,1 分别插入数据表B中的 a,b字段

因为以上功能我是需要用触发器实现。。所以只得写一个函数来调用。。求助各位!!
...全文
499 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
inthirties 2009-11-10
  • 打赏
  • 举报
回复
不错,就这样处理,以前也做过这样的题。
ff_1211 2009-11-10
  • 打赏
  • 举报
回复
谢谢wildwave !!我先试试!
小灰狼W 2009-11-10
  • 打赏
  • 举报
回复
这样比较好
create or replace trigger tgtest
before insert or update on ttext
for each row
declare
v1 number;
v2 number;
begin
v1:=instr(:new.a,'室')-1;
v2:=instr(:new.a,'厅')-1;
if v1>0 then
:new.b:=(case substr(:new.a,v1,1) when '一' then 1
when '二' then 2
when '三' then 3
when '四' then 4
when '五' then 5
when '六' then 6
when '七' then 7
when '八' then 8
when '九' then 9
when '零' then 0
when '两' then 2 end);
else :new.b:=null;
end if;
if v2>0 then
:new.c:=(case substr(:new.a,v2,1) when '一' then 1
when '二' then 2
when '三' then 3
when '四' then 4
when '五' then 5
when '六' then 6
when '七' then 7
when '八' then 8
when '九' then 9
when '零' then 0
when '两' then 2 end);
else :new.c:=null;
end if;
exception
when others then
:new.b:=null;
:new.c:=null;
end tgtest;
小灰狼W 2009-11-10
  • 打赏
  • 举报
回复
这里应该不会出现两位数的数字,比如十室十厅吧
直接写触发器好了
create table ttext(a varchar2(10),b number,c number);


create or replace trigger tgtest
before insert or update on ttext
for each row
declare
flag boolean:=false;
v number;
begin
:new.b:=null;
:new.c:=null;
if :new.a is null then return; end if;
for i in 1..length(:new.a) loop
v:=case substr(:new.a,i,1) when '一' then 1
when '二' then 2
when '三' then 3
when '四' then 4
when '五' then 5
when '六' then 6
when '七' then 7
when '八' then 8
when '九' then 9
when '零' then 0
when '两' then 2 end;
if v is not null then
if flag=false then :new.b:=v;
flag:=true;
else :new.c:=v;
return;
end if;
end if;
end loop;
end tgtest;

case 部分可以根据需要增删
liusong_china 2009-11-10
  • 打赏
  • 举报
回复
中文数字....
又没有范围限制啊?
是从一到九还是没有范围限制? 像二十五这种是转成2,10,5还是25啊

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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