|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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选项的任何一个。 |
|