SQL数字转英文函数

-- 数字转英文
-- =============================================
-- Author:     qianjin036a
-- Create date:06/14/2008 02:27:17
-- Description:Arabic numerals to English
-- =============================================
Go
--创建函数
CREATE FUNCTION Digit2English
(
    @arabia decimal(38,17)
)
RETURNS varchar(1000)
AS
BEGIN
    declare @atoe table(a int,e varchar(10))
    insert into @atoe select 0,‘zero‘   union all select 1,‘one‘
    union all select 2,‘two‘            union all select 3,‘three‘
    union all select 4,‘four‘           union all select 5,‘five‘
    union all select 6,‘six‘            union all select 7,‘seven‘
    union all select 8,‘eight‘          union all select 9,‘nine‘

    declare @integer bigint,@trillion int,@billion int,@million int,@thousand int,@hundred int,@english varchar(1000)

    select @[email protected],@english=‘‘
    select @[email protected] % 1000000000000000/1000000000000,@[email protected] % 1000000000000/1000000000,
        @[email protected] % 1000000000/1000000,@thousand=(@integer % 1000000)/1000,@hundred=(@integer % 1000)
    if @trillion>0
        set @[email protected] + dbo.ThreeDigit(@trillion) + ‘trillion ‘
    if @billion>0
        set @[email protected] + dbo.ThreeDigit(@billion) + ‘billion ‘
    if @million>0
        set @[email protected] + dbo.ThreeDigit(@million) + ‘million ‘
    if @thousand>0
        set @[email protected] + dbo.ThreeDigit(@thousand) + ‘thousand ‘
    if @hundred>0
        set @[email protected] + dbo.ThreeDigit(@hundred)
    if @english=‘‘
        set @english=‘zero ‘
    if @[email protected]>0.000000000
        begin
            declare @decimal decimal(18,17)
            select @[email protected]+‘point ‘,@[email protected]@integer
            while @decimal>0.0
                begin
                    select @[email protected]+e+‘ ‘ from @atoe where cast(@decimal*10 as int)=a
                    set @[email protected]*10-cast(@decimal*10 as int)
                end
        end
    return @english
END
GO

-- =============================================
-- Author:      qianjin036a
-- Create date: 06/14/2008 02:27:17
-- Description: Three Digit Arabic numerals to English
-- =============================================
CREATE FUNCTION ThreeDigit
(
    @integer int
)
RETURNS varchar(100)
WITH EXECUTE AS CALLER
AS
BEGIN
    declare @atoe table(a int,e varchar(10))
    insert into @atoe select 0,‘zero‘   union all select 1,‘one‘
    union all select 2,‘two‘            union all select 3,‘three‘
    union all select 4,‘four‘           union all select 5,‘five‘
    union all select 6,‘six‘            union all select 7,‘seven‘
    union all select 8,‘eight‘          union all select 9,‘nine‘
    union all select 10,‘ten‘           union all select 11,‘eleven‘
    union all select 12,‘twelve‘        union all select 13,‘thirteen‘
    union all select 14,‘fourteen‘      union all select 15,‘fifteen‘
    union all select 16,‘sixteen‘       union all select 17,‘seventeen‘
    union all select 18,‘eighteen‘      union all select 19,‘nineteen‘
    union all select 20,‘twenty‘        union all select 30,‘thirty‘
    union all select 40,‘forty‘         union all select 50,‘fifty‘
    union all select 60,‘sixty‘         union all select 70,‘severty‘
    union all select 80,‘eighty‘        union all select 90,‘ninety‘

    declare @english varchar(100)
    set @english=‘‘
    if @integer>99
        begin
            select @english=e+‘ hundred ‘ from @atoe where @integer/100=a
            set @[email protected] % 100
            if @integer>0
                set @[email protected]+‘and ‘
        end
    if @integer<=20 and @integer>0
        select @en[email protected]+e+‘ ‘ from @atoe where @integer=a
    if @integer>20
        begin
            select @[email protected]+e+‘ ‘ from @atoe where @integer/10*10=a
            set @[email protected] % 10
            if @integer>0
                select @[email protected]+e+‘ ‘ from @atoe where @integer=a
        end
    RETURN @english
END
GO

select dbo.digit2english(123456789987654.321)
union all select dbo.digit2english(120045080045054.8412)
union all select dbo.digit2english(0.0102541)

go
/*
---------------------------------------------------------------------
one hundred and twenty three trillion four hundred and fifty six billion seven hundred and eighty nine million nine hundred and eighty seven thousand six hundred and fifty four point three two one
one hundred and twenty trillion forty five billion eighty million forty five thousand fifty four point eight four one two
zero point zero one zero two five four one
*/

  

时间: 2024-10-01 02:44:43

SQL数字转英文函数的相关文章

提取数字、英文、中文、过滤重复字符等SQL函数(含判断字段是否有中文)

在日常应用中,往往根据实际需求录入一些值,而这些值不能直接使用,所以Sql中经常会对字段值进行一些常规的处理.这里搜集了(提取数字.英文.中文.过滤重复字符.分割字符的方法),方便日后查询使用. 一.判断字段值是否有中文 --SQL 判断字段值是否有中文 create function fun_getCN(@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word nchar(1),@CN nvarchar(4000) s

SQL 数字函数

1.ABS(X) 取绝对值函数 2.MOD(X,Y) 取余数 mod(4,3) =1 mod(3,4)=3 3.CEIL(X) 返回大于 或者等于X的最小整数 4.FLOOR(X) 返回小于或者等于X的最大整数 5.POWER(X,Y) 返回X的Y次幂 6.SQRT(X) 返回X的平方根 7.ROUND(X,[Y]) 返回对X的取整结果,可选参数Y表示对小数点后的第几位取整.四舍五入 8.SIGN(X) X小于零返回-1,X大于零返回1 9.COS(X) 余弦值 10.ACOS(X) 反余弦值

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第5/5套:Oracle SQL语言之常用函数.主要学习Oracle数据库SQL聚合函数,分组函数,字符函数,转换函数,日期字符数字转换,日期函数,集合函数,分析函数等. Oracle SQL语言之常用函数,课程内容详细如下: 聚合函数-数据统计 分组函数-使用group by与havin

数据库查询时,查询数字或者英文可以,查询中文时出错

数据库查询时,查询数字或者英文可以,查询中文时出错:提示????????????:select * from szdbdb_userdata where        truename='????' Illegal mix of collations (gb2312_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='12670 解决办法:一般网上会说是编码问题,在配置文件my.ini修改数据库编码.当把

sql server 常用的函数小汇

摘录些许sqlserver 常用到的一些函数,便于日常学习使用 一.字符转换函数1.ASCII()返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错.2.CHAR()将ASCII 码转换为字符.如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL .3.LOWER()和UPPER()LOWER()将字符串全部转为小写:UPPER()将字符串全部转为大写.4.STR()把

SQL Server 基础 04 函数与分组查询数据

函数与分组查询数据 系统函数分 聚合函数.数据类型转换函数.日期函数.数学函数 . . . 1. 聚合函数 主要是对一组值进行计算,然后返回一个值. 聚合函数包括 sum(求和).avg(求平均值).min().max().count(求数量) sum函数语法  :  sum(列明) select sum(sno) as 序号和 from stu_info avg select avg(sno) as 序号平均值 from stu_info . . . count 用来一组值的个数,统计 sel

SQL点滴30—SQL中常用的函数

原文:SQL点滴30-SQL中常用的函数 该文章转载自http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html 别人的总结,很详细. 以下所有例子均Studnet表为例:  计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写 select lowe

SQL语言的常用函数

本人心情:今天忽雨忽晴,一个周末又这么要过去了,总是感觉时间过得很快,不管是上班时间还是下班后的时间,总感觉时间不够用.最近博客也越来越少,有些知识用简单的文字去描述是很的抽象的,所以有时候也没什么可以写,以下是我这周抽空学的SQL语言常用函数.希望对大家有所帮助. SQL语言的常用函数 非常多.平时也许我们没经常用到,但是要用时,却不知如何使用.在这里,我举例几个常用的SQL常用函数: 字符函数 事例一:检索商品表,把商品价格后面加一个"元"字(商品价格比如为20) 分析:这题可以使

[转]SQL Server字符串处理函数大全

select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了.left()是sql函数.select 字段1 from 表1 where charindex('云',字段1)=1; 字符串函数对二进制数据.字符串和表达式执行不同的运算.此类函数作用于CHAR.VARCHAR. BINARY.