仓酷云
标题:
MSSQL网页编程之小写转年夜写金额
[打印本页]
作者:
活着的死人
时间:
2015-1-16 22:27
标题:
MSSQL网页编程之小写转年夜写金额
有了rowbase的binlog后,我们来分析一下怎么实现闪回。平时的DML无非三种操作,增删改,先说三种操作的日志格式。年夜写|金额|小写
在网上见到一个Oracle的版本的小写转年夜写金额的函数,感到还不错如今把它转成SQLServer版本。
/********************************************************
(birdie_7761@cmmail.com)
版本:1.0
创立工夫:20020227
修正工夫:
功效:小写金额转换成年夜写
参数:n_LowerMoney小写金额
v_TransType品种--1:directlytranslate,0:readitinwords
输入:年夜写金额
********************************************************/
CREATEFUNCTIONdbo.L2U(@n_LowerMoneynumeric(15,2),@v_TransTypeint)
RETURNSVARCHAR(200)AS
BEGIN
Declare@v_LowerStrVARCHAR(200)--小写金额
Declare@v_UpperPartVARCHAR(200)
Declare@v_UpperStrVARCHAR(200)--年夜写金额
Declare@i_Iint
set@v_LowerStr=LTRIM(RTRIM(ROUND(@n_LowerMoney,2)))--四舍五进为指定的精度并删除数据摆布空格
set@i_I=1
set@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
set@v_UpperStr=@v_UpperPart+@v_UpperStr
set@i_I=@i_I+1
end
if(0=@v_TransType)
begin
set@v_UpperStr=REPLACE(@v_UpperStr,零拾,零)
set@v_UpperStr=REPLACE(@v_UpperStr,零佰,零)
set@v_UpperStr=REPLACE(@v_UpperStr,零仟,零)
set@v_UpperStr=REPLACE(@v_UpperStr,零零零,零)
set@v_UpperStr=REPLACE(@v_UpperStr,零零,零)
set@v_UpperStr=REPLACE(@v_UpperStr,零角零分,整)
set@v_UpperStr=REPLACE(@v_UpperStr,零分,整)
set@v_UpperStr=REPLACE(@v_UpperStr,零角,零)
set@v_UpperStr=REPLACE(@v_UpperStr,零亿零万零元,亿元)
set@v_UpperStr=REPLACE(@v_UpperStr,亿零万零元,亿元)
set@v_UpperStr=REPLACE(@v_UpperStr,零亿零万,亿)
set@v_UpperStr=REPLACE(@v_UpperStr,零万零元,万元)
set@v_UpperStr=REPLACE(@v_UpperStr,万零元,万元)
set@v_UpperStr=REPLACE(@v_UpperStr,零亿,亿)
set@v_UpperStr=REPLACE(@v_UpperStr,零万,万)
set@v_UpperStr=REPLACE(@v_UpperStr,零元,元)
set@v_UpperStr=REPLACE(@v_UpperStr,零零,零)
end
--对壹元以下的金额的处置
if(元=substring(@v_UpperStr,1,1))
begin
set@v_UpperStr=substring(@v_UpperStr,2,(len(@v_UpperStr)-1))
end
if(零=substring(@v_UpperStr,1,1))
begin
set@v_UpperStr=substring(@v_UpperStr,2,(len(@v_UpperStr)-1))
end
if(角=substring(@v_UpperStr,1,1))
begin
set@v_UpperStr=substring(@v_UpperStr,2,(len(@v_UpperStr)-1))
end
if(分=substring(@v_UpperStr,1,1))
begin
set@v_UpperStr=substring(@v_UpperStr,2,(len(@v_UpperStr)-1))
end
if(整=substring(@v_UpperStr,1,1))
begin
set@v_UpperStr=零元整
end
return@v_UpperStr
END
例子:
selectdbo.L2U(56588441.111,0)
selectdbo.L2U(00.00,0)
优化的SQL查询算法,有效地提高查询速度
作者:
柔情似水
时间:
2015-1-18 16:13
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
作者:
不帅
时间:
2015-1-22 09:56
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
作者:
再见西城
时间:
2015-1-31 05:57
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
作者:
只想知道
时间:
2015-2-6 17:42
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
作者:
乐观
时间:
2015-2-17 19:54
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
作者:
因胸联盟
时间:
2015-3-5 22:35
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
作者:
莫相离
时间:
2015-3-12 16:30
连做梦都在想页面结构是怎么样的,绝非虚言
作者:
透明
时间:
2015-3-19 23:58
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2