VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: gaoqingfeng

求解方法

[复制链接]

1

主题

23

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
 楼主| 发表于 2020-7-10 22:45:01 | 显示全部楼层
谢谢  kxiaper  的提供

但还存在一样的问题
select dbo.ChangeBigSmall(101000.00)
--结果
壹拾万壹仟元整
回复

使用道具 举报

0

主题

30

帖子

25.00

积分

新手上路

Rank: 1

积分
25.00
发表于 2020-7-12 16:00:01 | 显示全部楼层
谢谢  kxiaper  的提供

但还存在一样的问题
select dbo.ChangeBigSmall(101000.00)
--结果
壹拾万壹仟元整
--------------------------------------------------------
什么问题?
要这样么?拾万壹仟元整
回复

使用道具 举报

1

主题

23

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
 楼主| 发表于 2020-7-12 19:15:01 | 显示全部楼层
select dbo.ChangeBigSmall(101000.00)
--结果
壹拾万壹仟元整


需要的结果应该是:壹拾万零壹仟元整(上述结果小了个零)
回复

使用道具 举报

0

主题

48

帖子

30.00

积分

新手上路

Rank: 1

积分
30.00
发表于 2020-7-13 09:45:01 | 显示全部楼层
alter function to_up(@num numeric(14,2))
returns varchar(100)
as
begin
declare @ndata varchar(20),@cdata varchar(100)
declare @nstr varchar(10),@zflag bit,@t varchar(10),@i int
set @ndata=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS bigint) AS varchar(20)),14)
set @cdata=''
set @zflag=0;set @i=1

while @i<=14
  begin
   set @nstr=substring(@ndata,@i,1)
   if @nstr<>' '
   begin
    --数字
    set @nstr=SUBSTRING('零壹贰叁肆伍陆柒捌玖',CAST(@nstr AS int)+1,1)
    set @t=SUBSTRING('仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1)
    if @nstr='零'
      begin
       if @t in ('亿','万','圆')
          set @cdata=@cdata+@t
       if @zflag=0
          set @zflag=1
      end
    else
      begin
        if @zflag=1
         begin
           if @t='圆'
            set @cdata=@cdata+@t
           else
            set @cdata=@cdata+'零'+@nstr+@t

           set @zflag=0
         end
        else
         set @cdata=@cdata+@nstr+@t
      end
   end
   set @i=@i+1
  end
IF @num<0
    SET @cdata='(负数)'+@cdata
  IF @num=0
    SET @cdata='零圆'
  IF @nstr='零'
    SET @cdata=@cdata+'整'
  RETURN(@cdata)
end
回复

使用道具 举报

1

主题

23

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
 楼主| 发表于 2020-7-13 11:00:01 | 显示全部楼层
楼上的在个位数上出了问题:

select dbo.to_up(101.00)

--结果
-------------
壹佰圆整

(所影响的行数为 1 行)
回复

使用道具 举报

0

主题

48

帖子

30.00

积分

新手上路

Rank: 1

积分
30.00
发表于 2020-7-15 10:15:01 | 显示全部楼层
if @t='圆'
            set @cdata=@cdata+@t
           else
            set @cdata=@cdata+'零'+@nstr+@t
-->
set @cdata=@cdata+'零'+@nstr+@t
回复

使用道具 举报

0

主题

30

帖子

25.00

积分

新手上路

Rank: 1

积分
25.00
发表于 2020-7-15 20:30:01 | 显示全部楼层
其实“万”和“仟”是紧接着的,中间并不需要加“零”
不知楼主这样做的用意

就像“1100”不需要显示成“壹仟零壹佰”吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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