SQLSERVER中的人民币数字转大写的函数实现

CREATE  FUNCTION [dbo].[f_num_chn] (@num numeric(14,5))
RETURNS varchar(100) WITH ENCRYPTION
AS
BEGIN
--版权所有:[email protected]
  DECLARE @n_data VARCHAR(20),@c_data VARCHAR(100),@n_str VARCHAR(10),@i int

SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS bigint) AS varchar(20)),14)
  SET @c_data=‘‘
  SET @i=1
  WHILE @i<=14
  BEGIN
    SET @n_str=SUBSTRING(@n_data,@i,1)
    IF @n_str<>‘ ‘
    BEGIN
      IF not ((SUBSTRING(@n_data,@i,2)=‘00‘) or
        ((@n_str=‘0‘) and ((@i=4) or (@i=8) or (@i=12) or (@i=14))))
        SET @[email protected]_data+SUBSTRING(‘零壹贰叁肆伍陆柒捌玖‘,CAST(@n_str AS int)+1,1)
      IF not ((@n_str=‘0‘) and (@i<>4) and (@i<>8) and (@i<>12))
        SET @[email protected]_data+SUBSTRING(‘仟佰拾亿仟佰拾万仟佰拾圆角分‘,@i,1)
      IF SUBSTRING(@c_data,LEN(@c_data)-1,2)=‘亿万‘
        SET @c_data=SUBSTRING(@c_data,1,LEN(@c_data)-1)
    END
    SET @[email protected]+1
  END
  IF @num<0
    SET @c_data=‘(负数)‘[email protected]_data
  IF @num=0
    SET @c_data=‘零圆‘
  IF @n_str=‘0‘
    SET @[email protected]_data+‘整‘
  RETURN(@c_data)
END

时间: 2024-11-24 04:51:27

SQLSERVER中的人民币数字转大写的函数实现的相关文章

SQLServer中查询的数字列前面补0返回指定长度的字符串

SQLServer中查询的数字列前面补0返回指定长度的字符串: 如: 角本如下: /****** Script for SelectTopNRows command from SSMS ******/ SELECT TOP 1000 [ID] ,[SN] ,[Name] FROM [EduDB].[dbo].[TestTab] select Right('0123456',SN) from TestTab; select RIGHT(REPLICATE('0',5)+CAST(SN AS var

Sqlserver 中系统表sysobjects、syscolumns以及函数object_id

1.sysobjects 系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等 sysobjects 重要字段解释: sysObjects ( Name sysname, --object 名称 id int, --object id xtype char(2), -- object 类型 type char(2), -- Object 类型(与xtype 似乎一模一样) uid smallint, -- object 所有者的ID ... --其他的字段不常用到. ) ?

如何将人民币数字转为大写

废话不说,直接上代码,实现传入数字输出人民币大写 let num="5556.4" console.log(numTocoggle(num)) function numTocoggle(num){ var regexp=/^\d+(([.]{1}(\d{0,2}))+){0,1}$/ if(regexp.test(num)){ /* 壹佰贰拾叁亿 伍仟陆佰捌拾捌万 捌仟伍佰伍拾伍元 伍角叁分*/ let digital=["零","壹",&quo

sqlserver中判断是数字(会自动将.3识别为0.3)

SQL Server 检测是不是数字型的数据(两种方法) 检测是不是数字型的数据, 两种方法 1. ISNUMERIC ( expression ) 2. PATINDEX ( '%pattern%' , expression ) 1. ISNUMERIC ( expression ) 如果是数字类型则返回 1 ,不是则返回 0 但ISNUMERIC有时是不可靠的,如果你不允许expression包含有任何字母,则会判断错: 如:ISNUMERIC('23e4')返回 1 ISNUMERIC('

SQLServer中DataLength()和Len()两内置函数的区别(转载)

最近工作中遇到了个问题:在数据库中声明字段类型时char(4),但实际只存储了‘DCE’三个字母,程序中拼装以该字段作为key的Map中,会把‘DCE’+空格作为其Key,这样造成用没加空格的‘DCE’为key去取Value的值是取不出来的,结果是空.后来查看数据库字段类型才发现了问题所在.大家都知道,char和varchar的区别就在于一个是固定长度,一个是可变长度.在寻找问题的过程中,用到了我们今天要说的这两个内置函数,DataLength()和Len().在解释DataLength()和L

python中的字符数字之间的转换函数

int(x [,base ])         将x转换为一个整数 long(x [,base ])        将x转换为一个长整数 float(x )               将x转换到一个浮点数 complex(real [,imag ])  创建一个复数 str(x )                 将对象 x 转换为字符串 repr(x )                将对象 x 转换为表达式字符串 eval(str )              用来计算在字符串中的有效Py

FastReport调用Delphi中的人民币大写转换自定义函数

FastReport调用Delphi中的人民币大写转换自定义函数 FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje: Double): string; const s1: string = '零壹贰叁肆伍陆柒捌玖'; s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟万'; function StrTran(const S, s1, s2: string): string; begin Result := S

c# 财务报表数字转大写的方法

/// <summary>/// 数字转大写/// </summary>/// <param name="Num">数字</param>/// <returns></returns> public static string CmycurD(decimal num) { string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字 string str2 = "万仟佰

Sql语句在SqlServer中创建数据库、表格并添加约束

通过Sql语句来创建数据库与架构 创建数据库 数据库的创建首先是要引用主数据库的,需要在master数据库的环境下进行创建.大致的语法如下: 1 -- 使用master数据库 2 use master 3 -- 创建数据库 4 create datebase [架构名.]数据库名 5 on [primary]--主文件数据描述 6 ( 7 name = '数据库逻辑名', --一般是数据库的名称 8 filename = '数据文件的名字',--全路径 9 size = 12mb, --数据文件