`

小写金额转换成大写(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)

分享到:
评论

相关推荐

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

    使用 SQL Server 存储过程实现小写金额转换大写金额 本文旨在探讨在 SQL Server 数据库环境中使用用户自定义存储过程实现小写数字金额转换成大写数字金额的设计思想,并结合源代码阐述实现方法及关键技术。 1. ...

    sqlServer字段大写转小写.txt

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

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

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

    人民币小写金额转大写

    通过上述函数,SQL Server能够高效地将任意小写金额转换为标准的大写形式,满足了财务数据处理的规范性要求。然而,实际应用中,开发者需要注意以下几点: - **性能考量**:对于大量数据的实时转换,应评估函数的...

    sqlserver 区分大小写的相关设置

    UPPER 函数将小写字符转换为大写,而 LOWER 函数将大写字符转换为小写。 例如: ```sql SELECT UPPER('hello'); -- 输出:HELLO SELECT LOWER('HELLO'); -- 输出:hello ``` SQL Server 中的 COLLATE 子句可以用于...

    sqlserver中常用函数

    SQL Server提供了多种三角函数以及角度和弧度之间的转换函数。 ##### SIN(), COS(), TAN(), COT() - **SIN()** 计算正弦值。 - **COS()** 计算余弦值。 - **TAN()** 计算正切值。 - **COT()** 计算余切值。 ```...

    mysql 数据库小写转换为大写的解决方案

    一旦MySQL服务重启完成,接下来就可以通过执行特定的SQL脚本来批量修改表名,将它们从小写转换为大写。这里以一个具体的例子来说明如何实现这一点。 1. **创建临时表名**: - 执行以下SQL查询来创建带有后缀`_TEST...

    sqlserver-oracle 数据类型对照

    本文将详细比较SQL Server和Oracle数据库之间的数据类型对应以及常用函数的转换。 首先,我们来看SQL Server和Oracle的数据类型对照: 1. **数值类型**: - `bigint`在SQL Server中对应Oracle的`NUMBER(19)`,...

    SQL Server连接字段的方法

    在SQL Server中,经常会遇到需要将不同的字段进行组合或转换的情况,比如将分别存储年、月、日的三个字段合并成一个日期格式的字符串。这种需求在实际应用中非常常见,尤其是在处理历史遗留数据或者特定格式的数据时...

    ORACLE与SQLSERVER函数异同比较

    ### ORACLE与SQLSERVER函数异同比较 在数据库领域,Oracle和SQL Server是两种非常流行的数据库管理系统。这两种系统虽然有着不同的背景和发展历程,但都提供了丰富的功能来满足各种业务需求。尤其是在函数支持方面...

    SqlServer 获取字符串中小写字母的sql语句

    在SQL Server中,有时我们需要对字符串进行特定的处理,例如获取字符串中的小写字母或大写字母。在本文中,我们将深入探讨如何使用SQL语句实现这一目标,以供参考和学习。 首先,我们来看如何获取字符串中的小写...

    SQL Server资料全篇

    - **字符串分隔函数.sql**和**小写转大写金额函数.sql**则展示了SQL Server如何处理字符串分隔问题以及货币格式转换,这对于数据清洗和格式化至关重要。 4. **微软Sql脚本中文版手册.chm** 这是一份详细的SQL ...

    SQLServer数据库导入Oracle

    "SQLServer数据库导入Oracle详解" 在数据库管理中,数据迁移是一个非常重要的步骤,特别是在不同数据库管理系统之间,例如从SQL Server到Oracle。下面我们将详细介绍如何将SQL Server数据库导入到Oracle中。 首先...

    Access与sql_server_语法差异.doc

    Access 中的 LCase 函数对应 SQL Server 中的 Lower 函数,用于将字符串转换为小写。Access 中的 UCase 函数对应 SQL Server 中的 Upper 函数,用于将字符串转换为大写。 条件取值 Access 中的 IIF 函数对应 SQL ...

    SQLServer2000常用函数大全(经典)

    字符串处理在数据库操作中极为常见,例如LEN()计算字符串长度,UPPER()和LOWER()分别转换为大写和小写,LEFT()和RIGHT()用于截取字符串的左边或右边部分,REPLACE()用于替换子串,RTRIM()和LTRIM()去除左右空白。...

    sqlserver函数大全

    2. **字符串函数**:处理字符数据时,`LEN()`计算字符串长度,`LEFT()`和`RIGHT()`用于提取字符串的左边或右边字符,`SUBSTRING()`截取字符串的一部分,`UPPER()`和`LOWER()`转换为大写或小写,`REPLACE()`替换子串...

    sql server 函数及用法全解

    7. UPPER() 和 LOWER():将字符串转换为大写或小写。 三、日期和时间函数 处理日期和时间数据时,这些函数非常有用: 1. GETDATE():获取当前系统日期和时间。 2. DATEADD():在日期上添加指定的时间间隔。 3. ...

    数据库SQL Server自学通

    4. 字符串函数:CHR(字符转换)、CONCAT(字符串拼接)、INITCAP(首字母大写)、UPPER(转换为大写)、LOWER(转换为小写)、LPAD/RPAD(左右填充)、LTRIM/RTRIM(左右修剪)、REPLACE(字符串替换)、SUBSTR(子...

    SqlServer使用实例

    **SqlServer使用实例** Sql Server是Microsoft公司开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。在本文中,我们将深入探讨Sql Server的一些核心功能和常见操作,包括常用函数和存储过程的介绍...

Global site tag (gtag.js) - Google Analytics