阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1703|回复: 2

[转帖] SQL小写数字转换成大写数字

[复制链接]
  • TA的每日心情
    奋斗
    2015-4-18 00:26
  • 签到天数: 170 天

    [LV.7]常住居民III

    发表于 2009-7-4 07:49:12 | 显示全部楼层 |阅读模式
    alter  FUNCTION [dbo].[f_num_chn] (@num numeric(14,5))
    RETURNS varchar(100) WITH ENCRYPTION
    AS
    BEGIN
      DECLARE @n_data VARCHAR(20),@c_data VARCHAR(100),@n_str VARCHAR(10),@i int
      SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS bigint) AS varchar(20)),14)
      SET @c_data=''
      SET @i=1
      WHILE @i<=14
      BEGIN
        SET @n_str=SUBSTRING(@n_data,@i,1)
        IF @n_str<>' '
        BEGIN
          IF not ((SUBSTRING(@n_data,@i,2)='00') or
            ((@n_str='0') and ((@i=4) or (@i=8) or (@i=12) or (@i=14))))
            SET @c_data=@c_data+SUBSTRING('零壹贰叁肆伍陆柒捌玖',CAST(@n_str AS int)+1,1)
          IF not ((@n_str='0') and (@i<>4) and (@i<>8) and (@i<>12))
            SET @c_data=@c_data+SUBSTRING('仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1)
          IF SUBSTRING(@c_data,LEN(@c_data)-1,2)='亿万'
            SET @c_data=SUBSTRING(@c_data,1,LEN(@c_data)-1)
        END
        SET @i=@i+1
      END
      IF @num<0
        SET @c_data='(负数)[email=]'+@c_data[/email]
      IF @num=0
        SET @c_data='零圆'
      IF @n_str='0'
        SET @c_data=@c_data+'整'
      RETURN(@c_data)
    END
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    无聊
    2012-6-15 10:44
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    发表于 2011-11-8 09:18:06 | 显示全部楼层
    沙发呀,不容易,楼主写的不错!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    无聊
    2011-12-5 09:24
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2011-11-9 10:59:14 | 显示全部楼层
    你们大家看的懂吗????
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表