create table emp1
(
eid int primary key,
ename varchar(10),
sal money
)
insert into emp1 select 1001,'lecky',null
union select 1002,'kimi',10
union select 1003,'hamasaki',20
union select 1004,'boa',30
select avg(sal) from emp1 where sal is not null
--null将被聚合函数忽略
select avg(case when sal is null then 0 else sal end) from emp1
--此语句可将null参与聚合计算
--null之间不可比较
select coalesce('',null,'lecky',null)
--coalesce返回参数中第一个非空表达式
/*isnull*/
if isnull('',0)=0 print 'ok'
--不为null则返回该表达式的值,否则将被参数2替换
if ''=0 print 'ok'
--空字符ASC码值为0,所以该条件成立
NULLIF ( expression , expression )
--如果两个指定的表达式相等,则返回空值。
--如果两个表达式不相等,NULLIF 返回第一个 expression 的值。
--如果相等,NULLIF 返回第一个 expression 类型的空值。
--参数为常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组合
(
eid int primary key,
ename varchar(10),
sal money
)
insert into emp1 select 1001,'lecky',null
union select 1002,'kimi',10
union select 1003,'hamasaki',20
union select 1004,'boa',30
select avg(sal) from emp1 where sal is not null
--null将被聚合函数忽略
select avg(case when sal is null then 0 else sal end) from emp1
--此语句可将null参与聚合计算
--null之间不可比较
select coalesce('',null,'lecky',null)
--coalesce返回参数中第一个非空表达式
/*isnull*/
if isnull('',0)=0 print 'ok'
--不为null则返回该表达式的值,否则将被参数2替换
if ''=0 print 'ok'
--空字符ASC码值为0,所以该条件成立
NULLIF ( expression , expression )
--如果两个指定的表达式相等,则返回空值。
--如果两个表达式不相等,NULLIF 返回第一个 expression 的值。
--如果相等,NULLIF 返回第一个 expression 类型的空值。
--参数为常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组合