仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1025|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之将小写金额转换为英文年夜写的SQL函数

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于update操作,只需要把event中的旧行和新行值对调即可。年夜写|函数|金额|小写|转换CREATEFUNCTION[dbo].[f_num_eng](@numnumeric(15,2))
RETURNSvarchar(400)WITHENCRYPTION
AS
BEGIN
--Allrightsreserved.pbsql
DECLARE@iint,@hundredsint,@tenthint,@oneint
DECLARE@thousandint,@millionint,@billionint
DECLARE@numbersvarchar(400),@svarchar(15),@resultvarchar(400)
SET@numbers=onetwothreefourfive
+sixseveneightnineten
+eleventwelvethirteenfourteenfifteen
+sixteenseventeeneighteennineteen
+twentythirtyfortyfifty
+sixtyseventyeightyninety
SET@s=RIGHT(000000000000000+CAST(@numASvarchar(15)),15)
SET@billion=CAST(SUBSTRING(@s,1,3)ASint)--将12位整数分红4段:十亿、百万、千、百十个
SET@million=CAST(SUBSTRING(@s,4,3)ASint)
SET@thousand=CAST(SUBSTRING(@s,7,3)ASint)
SET@result=
SET@i=0
WHILE@i<=3
BEGIN
SET@hundreds=CAST(SUBSTRING(@s,@i*3+1,1)ASint)--百位0-9
SET@tenth=CAST(SUBSTRING(@s,@i*3+2,1)ASint)
SET@one=(CASE@tenthWHEN1THEN10ELSE0END)+CAST(SUBSTRING(@s,@i*3+3,1)ASint)--个位0-19
SET@tenth=(CASEWHEN@tenth<=1THEN0ELSE@tenthEND)--十位0、2-9
IF(@i=1and@billion>0and(@million>0or@thousand>0or@hundreds>0))or
(@i=2and(@billion>0or@million>0)and(@thousand>0or@hundreds>0))or
(@i=3and(@billion>0or@million>0or@thousand>0)and(@hundreds>0))
SET@result=@result+,--百位不是0则每段之间加毗连符,
IF(@i=3and(@billion>0or@million>0or@thousand>0)and(@hundreds=0and(@tenth>0or@one>0)))
SET@result=@result+and--百位是0则加毗连符AND
IF@hundreds>0
SET@result=@result+RTRIM(SUBSTRING(@numbers,@hundreds*10-9,10))+hundred
IF@tenth>=2and@tenth<=9
BEGIN
IF@hundreds>0
SET@result=@result+and
SET@result=@result+RTRIM(SUBSTRING(@numbers,@tenth*10+171,10))
END
IF@one>=1and@one<=19
BEGIN
IF@tenth>0
SET@result=@result+-
ELSE
IF@hundreds>0
SET@result=@result+and
SET@result=@result+RTRIM(SUBSTRING(@numbers,@one*10-9,10))
END
IF@i=0and@billion>0
SET@result=@result+billion
IF@i=1and@million>0
SET@result=@result+million
IF@i=2and@thousand>0
SET@result=@result+thousand
SET@i=@i+1
END
IFSUBSTRING(@s,14,2)00
BEGIN
SET@result=@result+point
IFSUBSTRING(@s,14,1)=0
SET@result=@result+zero
ELSE
SET@result=@result+RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,14,1)ASint)*10-9,10))
IFSUBSTRING(@s,15,1)0
SET@result=@result++RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,15,1)ASint)*10-9,10))
END
RETURN(@result)
END
这能找出所有错误的99.99%。它不能找出的是仅仅涉及数据文件的损坏(这很不常见)。如果你想要检查一张表,你通常应该没有选项地运行myisamchk或用-s或--silent选项的任何一个。
admin 该用户已被删除
沙发
发表于 2015-1-18 16:32:29 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
分手快乐 该用户已被删除
板凳
发表于 2015-1-31 06:52:14 来自手机 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-6 18:06:35 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
柔情似水 该用户已被删除
5#
发表于 2015-2-17 23:40:24 | 只看该作者
比如日志传送、比如集群。。。
第二个灵魂 该用户已被删除
6#
发表于 2015-3-5 23:48:22 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
只想知道 该用户已被删除
7#
发表于 2015-3-12 16:37:46 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
透明 该用户已被删除
8#
发表于 2015-3-12 16:37:46 | 只看该作者
学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!
再见西城 该用户已被删除
9#
 楼主| 发表于 2015-3-20 00:26:32 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-3 19:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表