`

小写金额转换成大写(sql server)

 
阅读更多

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[L2U]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[L2U]
GO

CREATE FUNCTION dbo.L2U(@n_LowerMoney numeric(15,2),@v_TransType int)
RETURNS VARCHAR(200) AS
BEGIN
Declare @v_LowerStr VARCHAR(200) -- 小写金额
Declare @v_UpperPart VARCHAR(200)
Declare @v_UpperStr VARCHAR(200) -- 大写金额
Declare @i_I int

set @v_LowerStr = LTRIM(RTRIM(ROUND(@n_LowerMoney,2))) --四舍五入为指定的精度并删除数据左右空格
set @i_I = 1
set @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
set @v_UpperStr = @v_UpperPart + @v_UpperStr
set @i_I = @i_I + 1
end

if ( 0 = @v_TransType)
begin
set @v_UpperStr = REPLACE(@v_UpperStr,'零拾','零')
set @v_UpperStr = REPLACE(@v_UpperStr,'零佰','零')
set @v_UpperStr = REPLACE(@v_UpperStr,'零仟','零')
set @v_UpperStr = REPLACE(@v_UpperStr,'零零零','零')
set @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')
set @v_UpperStr = REPLACE(@v_UpperStr,'零角零分','整')
set @v_UpperStr = REPLACE(@v_UpperStr,'零分','整')
set @v_UpperStr = REPLACE(@v_UpperStr,'零角','零')
set @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万零元','亿元')
set @v_UpperStr = REPLACE(@v_UpperStr,'亿零万零元','亿元')
set @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万','亿')
set @v_UpperStr = REPLACE(@v_UpperStr,'零万零元','万元')
set @v_UpperStr = REPLACE(@v_UpperStr,'万零元','万元')
set @v_UpperStr = REPLACE(@v_UpperStr,'零亿','亿')
set @v_UpperStr = REPLACE(@v_UpperStr,'零万','万')
set @v_UpperStr = REPLACE(@v_UpperStr,'零元','元')
set @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')
end

-- 对壹元以下的金额的处理
if ( '元' = substring(@v_UpperStr,1,1))
begin
set @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))
end

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

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

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

if ('整' = substring(@v_UpperStr,1,1))
begin
set @v_UpperStr = '零元整'
end
return @v_UpperStr
END
GO

select dbo.L2U(12.93,1),dbo.L2U(12.93,0)

select dbo.L2U(201020.256,1),dbo.L2U(1023405612.89,0)

分享到:
评论

相关推荐

    sqlServer字段大写转小写.txt

    该Sql语句可将sqlServer表结构字段列名内大写字母转换为小写字母,只需拷贝sql到数据库查询框中执行即可。

    用SQL Server存储过程实现小写金额转换大写金额.pdf

    用SQL Server存储过程实现小写金额转换大写金额.pdf

    SQL Server中人民币大写金额函数

    在SQL Server中用函数把数字金额转换成大写金额 最大转换金额为5万亿 如 select DBO.ChineseJe(2000000200000.04) 得到 贰万亿零贰拾万元零肆分

    sqlserver中常用函数

    sqlserver中常用函数----字符串函数---- ASCII() --函数返回字符表达式最左端字符的ASCII 码值 CHAR() --函数用于将ASCII 码转换为字符 --如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值 ...

    收集整理的SQL Server自定义函数

    18.人民币小写金额转大写 32 19.向左填充指定字符串 36 20.将整型数字转换为大写汉字 39 21.检查给定串是否存在于由区间及点集的结合内 39 22.根据日期返回星座 41 23.计算两个日期之间的工作日 43 24.根据年月生成...

    修改列名大小写.sql

    sqlserver 修改列名大小写 ,使用该语句可以快速将数据库表的列名改成小写

    MYSQL,SQLSERVER,ORACLE常用的函数

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL&gt; select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- ...

    sqlserver 不重复的随机数

    MSSQL有一个函数CHAR()是将int(0-255) ASCII代码转换为字符。那我们可以使用下面MS SQL语句,可以随机生成小写、大写字母,特殊字符和数字

    SQL开发利器:SQL_Prompt5.1破解版及安装教程

    在输入关键字时,会自动格式化,如你输入的是小写,它会自动帮你转换为大写的,不需要再写关键字和普通单词时来回地切换Caps Lock键。 它还提供了表定义智能提示。有一张很大的表,有些字段无法记得清楚,那么此时...

    程序员的SQL金典.rar

     5.2.2 字符串转换为小写  5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 计算子字符串的位置  5.2.9 从左侧开始取...

    程序员的SQL金典4-8

     5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 计算子字符串的位置  5.2.9 从左侧开始取子字符串  5.2.10 从右侧...

    程序员的SQL金典6-8

     5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 计算子字符串的位置  5.2.9 从左侧开始取子字符串  5.2.10 从右侧...

    程序员的SQL金典7-8

     5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 计算子字符串的位置  5.2.9 从左侧开始取子字符串  5.2.10 从右侧...

    程序员的SQL金典3-8

     5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 计算子字符串的位置  5.2.9 从左侧开始取子字符串  5.2.10 从右侧...

    SQL函数

    SQL SERVER 的函数 1.字符串函数 长度与分析用 datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格 substring(expression,start,length) 不多说了,取子串 right(char_expr,int_expr...

    C++Builder精彩编程实例集锦的源代码前3部分.rar

    实例072 如何将小写金额转换成大写金额 实例073 如何将全角字符串转换成半角字符串 实例074 如何按照指定的有效位数转换数字 实例075 如何获取汉字的拼音索引 实例076 如何设置输入方法 实例077 如何控制数据...

    C++Builder精彩编程实例集锦的源代码后3部分.rar

    实例072 如何将小写金额转换成大写金额 实例073 如何将全角字符串转换成半角字符串 实例074 如何按照指定的有效位数转换数字 实例075 如何获取汉字的拼音索引 实例076 如何设置输入方法 实例077 如何控制数据...

    第一部分 界面设计

    实例072 如何将小写金额转换成大写金额 实例073 如何将全角字符串转换成半角字符串 实例074 如何按照指定的有效位数转换数字 实例075 如何获取汉字的拼音索引 实例076 如何设置输入方法 实例077 如何控制数据...

Global site tag (gtag.js) - Google Analytics