快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

金额阿拉伯数字转变为中文的自定义函数

CREATE FUNCTION ChangeBigSmall
(@ChangeMoney money)
RETURNS VarChar(100) AS

BEGIN
Declare @String1 char(20)
Declare @String2 char(30)
Declare @String4 Varchar(100)
Declare @String3 Varchar(100) --从原A值中取出的值
Declare @i int --循环变量
Declare @J Int --A的值乘以100的字符串长度
Declare @Ch1 Varchar(100) --数字的汉语读法
Declare @Ch2 Varchar(100) --数字位的汉字读法
Declare @Zero Int --用来计算连续有几个零
Declare @ReturnValue VarChar(100)

Select @ReturnValue = \\\'\\\'
Select @String1 = \\\'零壹贰叁肆伍陆柒捌玖\\\'
Select @String2 = \\\'万仟佰拾亿仟佰拾万仟佰拾元角分\\\'

Select @String4 = Cast(@ChangeMoney*100 as int)

select @J=len(cast((@ChangeMoney*100) as int))

Select @String2=Right(@String2,@J)

Select @i = 1

while @i<= @j Begin

Select @String3 = Substring(@String4,@i,1)

if @String3<>\\\'0\\\' Begin

Select @Ch1 = Substring(@String1, Cast(@String3 as Int) + 1, 1)
Select @Ch2 = Substring(@String2, @i, 1)
Select @Zero = 0 --表示本位不为零
end
else Begin
If (@Zero = 0) Or (@i = @J - 9) Or (@i = @J - 5) Or (@i = @J - 1)
Select @Ch1 = \\\'零\\\'
Else
Select @Ch1 = \\\'\\\'

Select @Zero = @Zero + 1 --表示本位为0

--假如转变的数值需要扩大,那么需改动以下表达式 I 的值。
Select @Ch2 = \\\'\\\'

If @i = @J - 10 Begin
Select @Ch2 = \\\'亿\\\'
Select @Zero = 0
end

If @i = @J - 6 Begin
Select @Ch2 = \\\'万\\\'
Select @Zero = 0
end

if @i = @J - 2 Begin
Select @Ch2 = \\\'元\\\'
Select @Zero = 0
end

If @i = @J
Select @Ch2 = \\\'整\\\'

end

Select @ReturnValue = @ReturnValue + @Ch1 + @Ch2

select @i = @i+1
end

--最后将多余的零去掉
If CharIndex(\\\'仟仟\\\',@ReturnValue) <> 0
Select @ReturnValue = Replace(@ReturnValue, \\\'仟仟\\\', \\\'仟\\\')

If CharIndex(\\\'佰佰\\\',@ReturnValue) <> 0
Select @ReturnValue = Replace(@ReturnValue, \\\'佰佰\\\', \\\'佰\\\')

If CharIndex(\\\'零元\\\',@ReturnValue) <> 0
Select @ReturnValue = Replace(@ReturnValue, \\\'零元\\\', \\\'元\\\')

If CharIndex(\\\'零万\\\',@ReturnValue) <> 0
Select @ReturnValue = Replace(@ReturnValue, \\\'零万\\\', \\\'万\\\')

If CharIndex(\\\'零亿\\\',@ReturnValue) <> 0
Select @ReturnValue = Replace(@ReturnValue, \\\'零亿\\\', \\\'亿\\\')

If CharIndex(\\\'零整\\\',@ReturnValue) <> 0
Select @ReturnValue = Replace(@ReturnValue, \\\'零整\\\', \\\'整\\\')

If CharIndex(\\\'零佰\\\',@ReturnValue) <> 0
Select @ReturnValue = Replace(@ReturnValue, \\\'零佰\\\', \\\'零\\\')

If CharIndex(\\\'零仟\\\',@ReturnValue) <> 0
Select @ReturnValue = Replace(@ReturnValue, \\\'零仟\\\', \\\'零\\\')

If CharIndex(\\\'元元\\\',@ReturnValue) <> 0
Select @ReturnValue = Replace(@ReturnValue, \\\'元元\\\', \\\'元\\\')

return @ReturnValue

END
返回类别: 教程
上一教程: SQL SERVER中单引号的两种处理技巧
下一教程: SQL SERVER连接中三个常见的错误分析

您可以阅读与"金额阿拉伯数字转变为中文的自定义函数"相关的教程:
· 金额阿拉伯数字转变为中文的存储过程
· 15 个与日期时间相关的自定义函数
· SQL自定义函数的应用
· 计算指定年月的最后一天的自定义MYSQL函数
· 自定义用于ASP WEB站点的SQL 7.0数据库(2)
    微笑服务 优质保证 索取样品