数字转汉字

wwfxgm 2017-05-17 08:07:05
我想将 数字 改为汉字。比如 1992 改变为 一九九二 。12 改变为 十二, 18 改变为 十八。10 改变为 十。9 改变为 九。依此类推。
百度了一下sql函数,都不符合这样的要求。不知道有没有完美一点的方法?
...全文
236 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2017-05-24
  • 打赏
  • 举报
回复
12--十二 22--二二 ------------?这样显示 只针对10 ~19 显示十?
_Jayson 2017-05-24
  • 打赏
  • 举报
回复
引用 8楼卖水果的net 的回复:
看错版块了。。
无敌
卖水果的net 2017-05-17
  • 打赏
  • 举报
回复
引用 3 楼 wwfxgm 的回复:
[quote=引用 1 楼 wmxcn2000 的回复:] 1992 ,是“一九九二”,不是 “一千九百九十二” 12, 是“十二”,不是 “一二” 你说一下这个规律;
应该就是出生年月日 的转换。[/quote] 嗯,那就按 2# 的方法就可以;
wwfxgm 2017-05-17
  • 打赏
  • 举报
回复
引用 2 楼 zbdzjx 的回复:
猜测,楼主是不是要将年月日改成汉字? 如果是这样,年就直接替换,月和日就判断一下,小于10的直接替换;大于十的,就替换后中间加个“十”;特殊的数字,如10、20、30,替换成相应的汉字。应该就OK了。
我本想做一个函数。能简单一点。现在都是前端用转换。最好是数据库帮我转换好。
wwfxgm 2017-05-17
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
1992 ,是“一九九二”,不是 “一千九百九十二” 12, 是“十二”,不是 “一二” 你说一下这个规律;
应该就是出生年月日 的转换。
zbdzjx 2017-05-17
  • 打赏
  • 举报
回复
猜测,楼主是不是要将年月日改成汉字? 如果是这样,年就直接替换,月和日就判断一下,小于10的直接替换;大于十的,就替换后中间加个“十”;特殊的数字,如10、20、30,替换成相应的汉字。应该就OK了。
卖水果的net 2017-05-17
  • 打赏
  • 举报
回复
1992 ,是“一九九二”,不是 “一千九百九十二” 12, 是“十二”,不是 “一二” 你说一下这个规律;
卖水果的net 2017-05-17
  • 打赏
  • 举报
回复
看错版块了。。
wwfxgm 2017-05-17
  • 打赏
  • 举报
回复
引用 6 楼 wmxcn2000 的回复:

SQL> 
SQL> create or replace function fn(v_in varchar2)
  2  return varchar
  3  as
  4      v_ret varchar2(30);
  5  begin
  6      v_ret := translate(v_in, '0123456789','零一二三四五六七八九');
  7      if length(v_ret) = 2 then
  8          v_ret := substr(v_ret,1,1) || '十' || substr(v_ret,2,1);
  9          v_ret := trim(leading '一' from trim(trailing '零' from v_ret));
 10      end if;
 11      return v_ret;
 12  end;
 13  /
Function created
SQL> select fn(1992) from dual
  2  union all
  3  select fn(2) from dual
  4  union all
  5  select fn(10) from dual
  6  union all
  7  select fn(15) from dual
  8  union all
  9  select fn(20) from dual
 10  union all
 11  select fn(21) from dual
 12  union all
 13  select fn(25) from dual;
FN(1992)
--------------------------------------------------------------------------------
一九九二
二
十
十五
二十
二十一
二十五
7 rows selected
SQL> drop function fn;
Function dropped

SQL> 
这个居然是oracle 的代码。
卖水果的net 2017-05-17
  • 打赏
  • 举报
回复

SQL> 
SQL> create or replace function fn(v_in varchar2)
  2  return varchar
  3  as
  4      v_ret varchar2(30);
  5  begin
  6      v_ret := translate(v_in, '0123456789','零一二三四五六七八九');
  7      if length(v_ret) = 2 then
  8          v_ret := substr(v_ret,1,1) || '十' || substr(v_ret,2,1);
  9          v_ret := trim(leading '一' from trim(trailing '零' from v_ret));
 10      end if;
 11      return v_ret;
 12  end;
 13  /
Function created
SQL> select fn(1992) from dual
  2  union all
  3  select fn(2) from dual
  4  union all
  5  select fn(10) from dual
  6  union all
  7  select fn(15) from dual
  8  union all
  9  select fn(20) from dual
 10  union all
 11  select fn(21) from dual
 12  union all
 13  select fn(25) from dual;
FN(1992)
--------------------------------------------------------------------------------
一九九二
二
十
十五
二十
二十一
二十五
7 rows selected
SQL> drop function fn;
Function dropped

SQL> 

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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