|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有了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查询算法,有效地提高查询速度 |
|