输出大写金额的SQL函数写法-输入小写金额 (输入大写输出小写)

教程大全 2025-07-14 11:55:50 浏览

下面为您介绍的SQL函数功能是将小写金额转换成大写,如果您在此方面遇到过问题,不妨一看,相信对您学习SQL函数能够有所帮助。

参数:@LowerMoney 小写金额 加上小数点最长可以保留38位输出:大写金额简介:SQL版 小写金额转换成大写金额(最多可以精确到小数点四位)注: Decimal 数据类型最多可存储 38 个数字转载:请保留以上信息,谢谢!!!********************************************************/

SET QUOTED_IDENTIFIER ONGOSET ANSI_NULLS ONGO

CREATE Function LowerToUpper(@LowerMoney Decimal(38,4))Returns Varchar(200) –返回的大写金额的字符AsBeginDeclare @LowerStr Varchar(50) –小写金额Declare @UpperStr Varchar(200) –大写金额Declare @UpperTmp Varchar(15) –大写金额的临时字符串Declare @i Int –递增量Declare @LowerLen Int –小写金额的总长度

Set @LowerStr = @LowerMoney –把Decimal型的值全部赋给字符串变量 注:(赋值过去的话如8 在字符串变量中是显示8.0000 因为小数位精确到四位,没有的话,它会自动补0)Set @LowerStr = Replace(@LowerStr,’.’,”) –把小数点替换成空字符 –精确到小数点的四位 角分厘毫

Set @LowerLen = Len(@LowerStr) –获取小写金额的总长度(包括四个小数位)Select @i = 1,@UpperStr = ”,@UpperTmp = ” –设置默认初始值

While @i <= @LowerLenBeginSet @UpperTmp = Case #p#When SubString(@LowerStr,@LowerLen – @i + 1,1) = ‘0’ And @i = ***nd (Convert(Int,Right(@LowerStr,4)) = 0 Or @LowerLen > 5) Then ‘元’ –注:如果个位为0的话,并且四位小数都是0或者它的长度超过5(也就是超过元),则为元–When SubString(@LowerStr,@LowerLen – @i + 1,1) = ‘0’ Then ”Else+ Case SubString(@LowerStr,@LowerLen – @i + 1,1) –看当前位是数字几,就直接替换成汉字繁体大写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 @iWhen 1 Then ‘毫’When 2 Then ‘厘’When 3 Then ‘分’When 4 Then ‘角’When 5 Then ‘元’When 9 Then ‘萬’When 13 Then ‘亿’When 17 Then ‘兆’When 21 Then ‘京’When 25 Then ‘垓’When 29 Then ‘杼’When 33 Then ‘穰’When 37 Then ‘沟’ –Decimal型***长度是38 后面的就不用再考虑了Else #p#+ Case @i%4When 2 Then ‘拾’ –拾 6 10 14 18 22 26 30 34 38 …………When 3 Then ‘佰’ –佰 7 11 15 19 23 27 31 35 39 …………When 0 Then ‘仟’ –仟 8 12 16 20 24 28 32 36 40 …………EndEndEndSet @UpperStr = Isnull(@UpperTmp,”) + Isnull(@UpperStr,”)Set @i = @i + 1EndIf Convert(Int,Right(@LowerStr,4)) = 0 Set @UpperStr = Left(@UpperStr,Len(@UpperStr)-8) + ‘整’ –判断小数位数是不是都是0,是0就可以取整While Patindex(‘%零[仟佰拾角分厘毫零]%’,@UpperStr) <> 0 –把零拾或零佰或零零变成一个零BeginSet @UpperStr = stuff(@UpperStr,patindex(‘%零[仟佰拾角分厘毫零]%’,@UpperStr),2,’零’)EndWhile Patindex(‘%[沟穰杼垓京兆亿萬]零[沟穰杼垓京兆亿萬]%’,@UpperStr) <> 0 –把零萬或零亿的清空掉BeginSelect @UpperStr = Stuff(@UpperStr,Patindex(‘%[沟穰杼垓京兆亿萬]零[沟穰杼垓京兆亿萬]%’,@UpperStr)+1,2,”)EndWhile Patindex(‘%[仟佰拾]零[沟穰杼垓京兆亿萬]%’,@UpperStr) <> 0 –把类似拾零萬或佰零萬或仟零萬中间的零清空掉BeginSelect @UpperStr = Stuff(@UpperStr,Patindex(‘%[仟佰拾]零[沟穰杼垓京兆亿萬]%’,@UpperStr)+1,1,”)EndIf Patindex(‘%_零[元]%’,@UpperStr) <> 0 –把类似拾零元或百零元中间的零清空掉BeginSelect @UpperStr = Stuff(@UpperStr,Patindex(‘%_零[元]%’,@UpperStr) + 1,1,”)EndElse If (Patindex(‘零[元]%’,@UpperStr) <> 0) And (Convert(Int,Right(@LowerStr,4)) <> 0) –判断当前否是零元开头,并且后面的四个小数不为0BeginSelect @UpperStr = Stuff(@UpperStr,Patindex(‘零[元]%’,@UpperStr),2,”) –把零元清空掉EndIf Right(@UpperStr,1) = ‘零’ Set @UpperStr = Left(@UpperStr,Len(@UpperStr)-1) –如果***一位是零也清空掉If @UpperStr = ‘元整’ Set @UpperStr = ‘零’ + @UpperStr –如果只是0的话,就显示零元整Return @UpperStr –返回大写金额End

GOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGO #p#

–调用方法Select dbo.LowerToUpper(120000000) –壹亿贰仟萬元整Select dbo.LowerToUpper(102000000) –壹亿零贰佰萬元整Select dbo.LowerToUpper(100200000) –壹亿零贰拾萬元整Select dbo.LowerToUpper(100020000) –壹亿零贰萬元整Select dbo.LowerToUpper(100002000) –壹亿贰仟元整

【编辑推荐】

去掉参数内HTML代码的SQL函数

sql函数生成助记码的实例

SQL中表变量的不足

详解SQL中循环结构的使用

SQL循环执行while控制


数据库求100以内数的累加和代码是什么

declare @n int,@sum int --声明变量select @n=100,@sum=0--赋值while @n>0 beginset @sum=@sum+@n --累加set @n=@n-1 --循环条件endselect @sum as [100以内的和] --输出结果

sql语句大小写有关系吗?

输出大写金额的函数写法

SQL大小写并不敏感,但是如果是引起来的字符,则是区分大小写的,示例如下,1、创建测试表,create table test_uporlow(id number, value varchar2(20));2、插入样例数据,insert into test_uporlow values (301,Abcd);insert into test_uporlow values (302,cdef);insert into test_uporlow values (303,fgh);insert into test_uporlow values (304,acdfg);commit;3、查询所有含大写字母A记录,select t.*, rowid from TEST_UPORLOW t where value like A%,可以发现只能取出大写的A,表名TEST_UPORLOW大写或者小写都是可以的,4、查询所有含小写字母a记录,select t.*, rowid from TEST_UPORLOW t where value like a%,可以发现只能取出大写的a,

oracle数据库sql命令怎么改

oracle中修改数据用update语句。语法:UPDATE 表名 SET 字段=XXX WHERE 条件;如,数据库中,test表数据如下:现在要将王五的名字改成王九,可用如下语句:update test set where;commit;执行后结果:

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐