作业帮 > 英语 > 作业

oracle 如何数字转中文 eg:0,1,2,3...转为:未,一,二,三...

来源:学生作业帮 编辑:拍题作业网作业帮 分类:英语作业 时间:2024/04/30 04:44:52
oracle 如何数字转中文 eg:0,1,2,3...转为:未,一,二,三...
表A中一个项,是表b中符合条件的记录的个数,
我用select count(*) from b where id=2查询表b,得到的是数字,
而表A 中要求存入的是汉字,
我该如何把数字转为汉字?
Select decode(count(*) ,0,'未',1,'一',2,'二',3,'三') from b where id = 2;
再问: 可是我count(*)得到的数是不确定数目的啊 1 2 3 太少了。怎么也要有个function吧
再答: 写一个function把阿拉伯数字转换成汉字 create or replace function change(v_count Number) Return Varchar2 Is v_reslut Varchar2(100); Begin If v_count=5 Then v_reslut :='一'; End If; Return v_reslut; End; 具体逻辑很烦自己写, 这个1转成一,123是转成一二三呢还是一百二十三,如果是前者就简单了,for循环下;如果是后者的话看http://blog.csdn.net/bamboopot/article/details/2127021 应该满足条件,只是把一换成了壹,对应改改就行,然后 Select change(count(*)) from b where id = 2;
再问: 123是转成一二三 这样的就可以 求函数
再答: 第一个函数: Create Or Replace Function Change(V_Count Number) Return Varchar2 Is V_Result Varchar2(100); Begin If V_Count = 0 Then V_Result := '末'; Elsif V_Count = 1 Then V_Result := '一' ; Elsif V_Count = 2 Then V_Result := '二' ; Elsif V_Count = 3 Then V_Result := '三' ; Elsif V_Count = 4 Then V_Result := '四' ; Elsif V_Count = 5 Then V_Result := '五' ; Elsif V_Count = 6 Then V_Result := '六' ; Elsif V_Count = 7 Then V_Result := '七' ; Elsif V_Count = 8 Then V_Result := '八' ; Elsif V_Count = 9 Then V_Result := '九'; End If; Return V_Result; End; 第二个函数: Create Or Replace Function Change1(C_Count Number) Return Varchar2 Is V_Result Varchar2(100); V_Len Number; Cnt Number; Begin Select Length(To_Char(C_Count)) Into V_Len From Dual; Cnt := 1; For Rec In 1 .. V_Len Loop V_Result := V_Result || Change(Substr(To_Char(C_Count), Cnt, 1)); Cnt := Cnt + 1; End Loop; Return V_Result; End; Select change1(12345) From dual;结果:一二三四五; Select change1(count(*)) from b where id = 2;
再答: 函数一: Create Or Replace Function Change(V_Count Number) Return Varchar2 Is V_Result Varchar2(100); Begin If V_Count = 0 Then V_Result := '末'; Elsif V_Count = 1 Then V_Result := '一' ; Elsif V_Count = 2 Then V_Result := '二' ; Elsif V_Count = 3 Then V_Result := '三' ; Elsif V_Count = 4 Then V_Result := '四' ; Elsif V_Count = 5 Then V_Result := '五' ; Elsif V_Count = 6 Then V_Result := '六' ; Elsif V_Count = 7 Then V_Result := '七' ; Elsif V_Count = 8 Then V_Result := '八' ; Elsif V_Count = 9 Then V_Result := '九'; End If; Return V_Result; End; 函数二: Create Or Replace Function Change1(C_Count Number) Return Varchar2 Is V_Result Varchar2(100); V_Len Number; Cnt Number; Begin Select Length(To_Char(C_Count)) Into V_Len From Dual; Cnt := 1; For Rec In 1 .. V_Len Loop V_Result := V_Result || Change(Substr(To_Char(C_Count), Cnt, 1)); Cnt := Cnt + 1; End Loop; Return V_Result; End; Select Change1(12345) From Dual;结果:一二三四五; Select change(count(*)) from b where id = 2;