仓酷云

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

[学习教程] MSSQL编程:小写转年夜写金额[SQL SERVER]

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:27:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。server|年夜写|金额|小写
原作在SQL2000中有一些成绩。修改毛病并在SQL2000中运转经由过程。

/********************************************************
(wleii165@yahoo.com)
版本:1.0
创立工夫:20020227
修正工夫:
功效:小写金额转换成年夜写
参数:n_LowerMoney小写金额
v_TransType品种--1:directlytranslate,0:readitinwords
输入:年夜写金额
********************************************************/
CREATEPROCEDUREdbo.L2U
(
@n_LowerMoneynumeric(15,2),
@v_TransTypeint,
@RETVARCHAR(200)output
)
AS

Declare@v_LowerStrVARCHAR(200)--小写金额
Declare@v_UpperPartVARCHAR(200)
Declare@v_UpperStrVARCHAR(200)--年夜写金额
Declare@i_Iint

setnocounton

select@v_LowerStr=LTRIM(RTRIM(STR(@n_LowerMoney,20,2)))--四舍五进为指定的精度并删除数据摆布空格

select@i_I=1
select@v_UpperStr=

while(@i_I<=len(@v_LowerStr))
begin
select@v_UpperPart=casesubstring(@v_LowerStr,len(@v_LowerStr)-@i_I+1,1)
WHEN.THEN元
WHEN0THEN零
WHEN1THEN壹
WHEN2THEN贰
WHEN3THEN叁
WHEN4THEN肆
WHEN5THEN伍
WHEN6THEN陆
WHEN7THEN柒
WHEN8THEN捌
WHEN9THEN玖
END
+
case@i_I
WHEN1THEN分
WHEN2THEN角
WHEN3THEN
WHEN4THEN
WHEN5THEN拾
WHEN6THEN佰
WHEN7THEN仟
WHEN8THEN万
WHEN9THEN拾
WHEN10THEN佰
WHEN11THEN仟
WHEN12THEN亿
WHEN13THEN拾
WHEN14THEN佰
WHEN15THEN仟
WHEN16THEN万
ELSE
END
select@v_UpperStr=@v_UpperPart+@v_UpperStr
select@i_I=@i_I+1
end

--------print//v_UpperStr=+@v_UpperStr+//

if(@v_TransType=0)
begin
select@v_UpperStr=REPLACE(@v_UpperStr,零拾,零)
select@v_UpperStr=REPLACE(@v_UpperStr,零佰,零)
select@v_UpperStr=REPLACE(@v_UpperStr,零仟,零)
select@v_UpperStr=REPLACE(@v_UpperStr,零零零,零)
select@v_UpperStr=REPLACE(@v_UpperStr,零零,零)
select@v_UpperStr=REPLACE(@v_UpperStr,零角零分,整)
select@v_UpperStr=REPLACE(@v_UpperStr,零分,整)
select@v_UpperStr=REPLACE(@v_UpperStr,零角,零)
select@v_UpperStr=REPLACE(@v_UpperStr,零亿零万零元,亿元)
select@v_UpperStr=REPLACE(@v_UpperStr,亿零万零元,亿元)
select@v_UpperStr=REPLACE(@v_UpperStr,零亿零万,亿)
select@v_UpperStr=REPLACE(@v_UpperStr,零万零元,万元)
select@v_UpperStr=REPLACE(@v_UpperStr,万零元,万元)
select@v_UpperStr=REPLACE(@v_UpperStr,零亿,亿)
select@v_UpperStr=REPLACE(@v_UpperStr,零万,万)
select@v_UpperStr=REPLACE(@v_UpperStr,零元,元)
select@v_UpperStr=REPLACE(@v_UpperStr,零零,零)
end

--对壹元以下的金额的处置
if(substring(@v_UpperStr,1,1)=元)
begin
select@v_UpperStr=substring(@v_UpperStr,2,(len(@v_UpperStr)-1))
end

if(substring(@v_UpperStr,1,1)=零)
begin
select@v_UpperStr=substring(@v_UpperStr,2,(len(@v_UpperStr)-1))
end

if(substring(@v_UpperStr,1,1)=角)
begin
select@v_UpperStr=substring(@v_UpperStr,2,(len(@v_UpperStr)-1))
end

if(substring(@v_UpperStr,1,1)=分)
begin
select@v_UpperStr=substring(@v_UpperStr,2,(len(@v_UpperStr)-1))
end

if(substring(@v_UpperStr,1,1)=整)
begin
select@v_UpperStr=零元整
end

select@ret=@v_UpperStr

GO

挪用历程:

declare@retvarchar(200)

execL2U567983.897,1,@retoutput

select@ret
虽然可以将一个droptable语句转换成先delete再删表,性能却会降低很多。这里我们用上面说道的另外一种可用数据:“操作前数据备份”。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 13:03:46 | 只看该作者
我个人认为就是孜孜不懈的学习
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-24 23:40:56 来自手机 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
深爱那片海 该用户已被删除
地板
发表于 2015-2-2 16:13:16 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
admin 该用户已被删除
5#
发表于 2015-2-8 01:10:24 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-23 21:01:54 | 只看该作者
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
精灵巫婆 该用户已被删除
7#
 楼主| 发表于 2015-3-7 10:25:07 | 只看该作者
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
老尸 该用户已被删除
8#
发表于 2015-3-21 14:59:10 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 16:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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