方法2:nullif
nullif(表达式A,表达式B)
—-如果表达式A不等于表达式B,则返回表达式A
—-反之返回NULL 

declare @a int;

A:where 后面比较运算符(>,<,!=,>=,<=,between
and ,in,like,not like,is null,is not null)

摘自:

set @b=0

Oracle中提供了很多和日期相关的函数,包括日期的加减,在日期加减时有一些规律

declare @a int ---分子
declare @b int ---分母
select @a/nullif(@b,0) as [a除以b]

其作用就是,当参数1等于null时,就返回参数2的值。)

注意:多行函数在sql中的使用;

 

set @a=10

B:数值函数


select @a/nullif(@b,0)

10-通用函数和条件表达式


declare @b int;

05-逻辑运算符和排序

declare @a int ---分子
declare @b int ---分母
select  case  when @b=0 then NULL else @a/@b end  as [a除以b]

set @a=10

  1. 后面=可以接数据或者字符串,其中日期格式需要注意

 

declare @a int;

dual是伪表;

摘要:
下文介绍sql server中,sql脚本避免出现除零错误的方法分享

再利用isnull函数,我们就可以实现当@b=0的时候,结果返回1的需求了。最终的sql改写如下:

  1. sql:insert update
    delete等常见的sql语句,关键词没有缩写。命令可以控制表中定义和数据;
  2. sqlplus:desc/ed/c/col/for等命令都是sqlplus命令,关键词有缩写,命令不能改变数据库中的数据;访问sqlplus服务端口是1158;
  3. isqlplus:是sqlplus是网页版本的sqlplus。可以执行脚本,也可以运行脚本;访问isqlplus服务需要访问5560端口;

在各种业务系统开发中,通常会遇到除零的错误,下文分享了两种处理方法:
方法1: case when end 

(如果有朋友对isnull函数不了解的话,这里可以解释一下。

01-基本的查询语句

其运行结果自然为null了。

注意:掌握to_char(),to_number(),to_date()
,3个转换函数;

我们知道,null与任何数进行任何运算,其结果都等于null,利用这点,我们可以将上面的sql改写为:

B:判断列值为null

看一示例:

oracle中判断一个列值为null使用is null 或者is not null

其作用就是:如果两个指定的表达式相等,就返回null值。

     注意:别名需要使用“”,或者不加“”。别名中间有空格的需要“”;

declare @b int;

B:sql优化原则

OK,两种方法介绍完毕,相对于方法一,我更推荐大家使用方法二,因为方法二的代码更简省。

A:分组函数(avg(),max(),min(),count(),sum())

nullif函数有两个参数,定义如下:

select distinct job,deptno from emp;这里的distinct作用于后面的所有的列。

select isnull(@a/nullif(@b,0),1)

注意:nvl(),nvlif()和2个条件语句必须掌握。

NULLIF( expression , expression )

08-日期函数

isnull的定义如下:

 06-函数简介

set @b=0

B:查询排序(order by)

isnull(参数1,参数2)

04-过滤where

运行结果:null

A:oracle中隐式转换(查百度)

利用nullif函数

       group by  having  order by

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注