仓酷云
标题:
sql server中除数为零的处置技能
[打印本页]
作者:
变相怪杰
时间:
2015-1-16 14:07
标题:
sql server中除数为零的处置技能
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并没有他们需要的那么快和灵活。
作者:
只想知道
时间:
2015-1-25 17:12
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
作者:
变相怪杰
时间:
2015-2-3 12:00
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
作者:
小女巫
时间:
2015-2-8 22:44
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
作者:
柔情似水
时间:
2015-2-26 13:17
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
作者:
莫相离
时间:
2015-3-8 15:25
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
作者:
兰色精灵
时间:
2015-3-16 03:52
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
作者:
灵魂腐蚀
时间:
2015-3-22 20:10
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2