love fish大鵬一曰同風起,扶搖直上九萬里

          常用鏈接

          統計

          積分與排名

          friends

          link

          最新評論

          金額阿拉伯數字轉換為中文的存儲過程

          /********************************************************
          作者:(wleii165@yahoo.com)
          版本:1.0
          創建時間:20020227
          修改時間:
          功能:小寫金額轉換成大寫
          參數:n_LowerMoney?小寫金額
          ??????????v_TransType?種類?--?1:?directly?translate,?0:?read?it?in?words?
          輸出:大寫金額
          ********************************************************/
          CREATE?PROCEDURE?dbo.L2U?
          (
          @n_LowerMoney?numeric(15,2),
          @v_TransType?int,
          @RET?VARCHAR(200)?output
          )
          ?AS?
          ??
          Declare?@v_LowerStr?VARCHAR(200)?--?小寫金額?
          Declare?@v_UpperPart?VARCHAR(200)?
          Declare?@v_UpperStr?VARCHAR(200)?--?大寫金額
          Declare?@i_I?int

          set?nocount?on

          select?@v_LowerStr?=?LTRIM(RTRIM(STR(@n_LowerMoney,20,2)))?--四舍五入為指定的精度并刪除數據左右空格

          select?@i_I?=?1
          select?@v_UpperStr?=?''

          while?(?@i_I?<=?len(@v_LowerStr))
          begin
          ??????select?@v_UpperPart?=?case?substring(@v_LowerStr,len(@v_LowerStr)?-?@i_I?+?1,1)
          ????????????????????????????WHEN??'.'?THEN??'元'
          ????????????????????????????WHEN??'0'?THEN??'零'
          ????????????????????????????WHEN??'1'?THEN??'壹'
          ????????????????????????????WHEN??'2'?THEN??'貳'
          ????????????????????????????WHEN??'3'?THEN??'叁'
          ????????????????????????????WHEN??'4'?THEN??'肆'
          ????????????????????????????WHEN??'5'?THEN??'伍'
          ????????????????????????????WHEN??'6'?THEN??'陸'
          ????????????????????????????WHEN??'7'?THEN??'柒'
          ????????????????????????????WHEN??'8'?THEN??'捌'
          ????????????????????????????WHEN??'9'?THEN??'玖'
          ????????????????????????????END
          ??????????????????????????+?
          ????????????????????????????case?@i_I
          ????????????????????????????WHEN??1??THEN??'分'
          ????????????????????????????WHEN??2??THEN??'角'
          ????????????????????????????WHEN??3??THEN??''
          ????????????????????????????WHEN??4??THEN??''
          ????????????????????????????WHEN??5??THEN??'拾'
          ????????????????????????????WHEN??6??THEN??'佰'
          ????????????????????????????WHEN??7??THEN??'仟'
          ????????????????????????????WHEN??8??THEN??'萬'
          ????????????????????????????WHEN??9??THEN??'拾'
          ????????????????????????????WHEN??10??THEN??'佰'
          ????????????????????????????WHEN??11??THEN??'仟'
          ????????????????????????????WHEN??12??THEN??'億'
          ????????????????????????????WHEN??13??THEN??'拾'
          ????????????????????????????WHEN??14??THEN??'佰'
          ????????????????????????????WHEN??15??THEN??'仟'
          ????????????????????????????WHEN??16??THEN??'萬'
          ????????????????????????????ELSE?''
          ????????????????????????????END
          select?@v_UpperStr?=?@v_UpperPart?+?@v_UpperStr
          select?@i_I?=?@i_I?+?1
          end

          --------print??'//v_UpperStr?='+@v_UpperStr?+'//'

          if?(?@v_TransType=0?)
          begin
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零拾','零')?
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零佰','零')?
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零仟','零')?
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零零零','零')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零零','零')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零角零分','整')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零分','整')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零角','零')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零億零萬零元','億元')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'億零萬零元','億元')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零億零萬','億')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零萬零元','萬元')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'萬零元','萬元')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零億','億')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零萬','萬')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零元','元')
          select?@v_UpperStr?=?REPLACE(@v_UpperStr,'零零','零')
          end

          --?對壹元以下的金額的處理?
          if?(?substring(@v_UpperStr,1,1)='元'?)
          begin
          ?????select?@v_UpperStr?=?substring(@v_UpperStr,2,(len(@v_UpperStr)?-?1))
          end

          if?(substring(@v_UpperStr,1,1)=?'零')
          begin
          ?????select?@v_UpperStr?=?substring(@v_UpperStr,2,(len(@v_UpperStr)?-?1))
          end

          if?(substring(@v_UpperStr,1,1)='角')
          begin
          ?????select?@v_UpperStr?=?substring(@v_UpperStr,2,(len(@v_UpperStr)?-?1))
          end

          if?(?substring(@v_UpperStr,1,1)='分')
          begin
          ?????select?@v_UpperStr?=?substring(@v_UpperStr,2,(len(@v_UpperStr)?-?1))
          end

          if?(substring(@v_UpperStr,1,1)='整')
          begin
          ?????select?@v_UpperStr?=?'零元整'
          end

          select?@ret=@v_UpperStr

          GO

          調用過程:

          declare?@ret?varchar(200)

          exec?L2U?567983.897,1,@ret?output

          select?@ret

          posted on 2007-01-16 15:46 liaojiyong 閱讀(327) 評論(0)  編輯  收藏 所屬分類: MSSQL

          主站蜘蛛池模板: 十堰市| 通海县| 南康市| 寿宁县| 黔江区| 西充县| 衡东县| 沙河市| 惠州市| 甘德县| 五常市| 衡南县| 弥勒县| 衡水市| 长治县| 高平市| 高青县| 河池市| 弥勒县| 垫江县| 德令哈市| 进贤县| 永济市| 白河县| 美姑县| 得荣县| 兴义市| 湘潭县| 抚顺市| 安宁市| 怀宁县| 泾源县| 邛崃市| 朝阳市| 仲巴县| 依安县| 神农架林区| 扬中市| 阳东县| 宜良县| 古浪县|