|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用在sqlserver中做除法处置的时分,我们常常必要处置除数为零的情形,由于假如碰到这类情形的时分,sqlserver会抛出碰到以零作除数毛病的非常,我们总不但愿把这个非常显现给用户吧。
做个会报这个毛病的示例,如以下sql代码:
declare@aint;
declare@bint;
set@a=10
set@b=0
select@a/@b
运转就会抛出碰到以零作除数毛病的毛病
本章次要解说一下怎样在sqlserver处置除数为零的两种办法:
一,使用case语句。
我们改写下面的sql,当@b=0的时分,我们就前往1.改写以下:
declare@aint;
declare@bint;
set@a=10
set@b=0
selectcase@bwhen0then1else@a/@bend
如许写固然是准确的,但显的贫苦,上面我们看一下第二处置办法。
二,使用nullif函数。
nullif函数有两个参数,界说以下:
NULLIF(expression,expression)
其感化就是:假如两个指定的表达式相称,就前往null值。
看一示例:
selectnullif(0,0)
运转了局:null
我们晓得,null与任何数举行任何运算,其了局都即是null,使用这点,我们能够将下面的sql改写为:
declare@aint;
declare@bint;
set@a=10
set@b=0
select@a/nullif(@b,0)
其运转了局天然为null了。
再使用isnull函数,我们就能够完成当@b=0的时分,了局前往1的需求了。终极的sql改写以下:
declare@aint;
declare@bint;
set@a=10
set@b=0
selectisnull(@a/nullif(@b,0),1)
OK,两种办法先容终了,相对办法一,我更保举人人利用办法二,由于办法二的代码更简省。
(假如有伴侣对isnull函数不懂得的话,这里能够注释一下。
isnull的界说以下:
isnull(参数1,参数2)
其感化就是,当参数1即是null时,就前往参数2的值。)MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。 |
|