SQL中isnull,nullif,coalesce的用法

ISNULL是判断是否为NULL

而NULLIF是把值换成NULL

COALESCE是用别的来代替NULL

SELECT employee_id,first_name,last_name,NULLIF (SALES_QUOTA,-1) as Quota

FROM employees

就是把-1变成 NULL

COALESCE(表达式1,表达式2,....表达式n)

从前到后,谁不是NULL就显示谁

Select employee_id,first_name,last_name,

COALESCE ( appt_quota,(Select Min(appt_quota) From employees),0 ) AS quota
From employees
Where department = ‘Marketing‘

附:
ISNULL(check_expression, replacement_value)

  • check_expression 与 replacement_value 数据类型必须一致
  • 如果 check_expression 为 NULL,则返回 replacement_value
  • 如果 check_expression 不为 NULL,则返回 check_expression

NULLIF 用于检查两个表达式,语法:
NULLIF(expression, expression)

    • 如果两个 expression 相等,则返回 NULL,该 NULL 为第一个 expression 的数据类型
    • 如果两个 expression 不相等,则返回第一个 expression

例子1:

create table test_table(  IDNUM NUMBER,  CAT   VARCHAR2(200),  PRICE NUMBER);INSERT INTO test_table VALUES(1,‘‘,10);INSERT INTO test_table VALUES(2,‘cat1‘,10);INSERT INTO test_table VALUES(3,‘cat1‘,3);INSERT INTO test_table VALUES(4,‘cat2‘,11);INSERT INTO test_table VALUES(5,‘cat2‘,10);INSERT INTO test_table VALUES(6,‘‘,10);select   COALESCE(CAT,‘unknown‘),  SUM(PRICE)from test_table GROUP BY CAT; 

result:

COALESCE(CAT,‘UNKNOWN‘)     SUM(PRICE) 
  unknown                                  20 
  cat1                                         13 
  cat2                                         21

注意:COALESCE 与 ISNULL相比,COALESCE 类似case,可以多个input,ISNULL只有2个parameter

COALESCE不能完成类型的转换,否则报错

时间: 2024-11-10 06:38:12

SQL中isnull,nullif,coalesce的用法的相关文章

SQL中的LIKE语句的用法

SQL中的LIKE语句的用法 内容 在SQL结构化查询语言中,LIKE语句有着至关重要的作用.LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的. 假设有一个数据库中有个表table1,在table1中有两个字段,分别是name和sex二者全是字符型数据.现在我们要在姓名字段中查询以“张”字开头的记录,语句如下:     select * from table1 wh

sql中exists,not exists的用法

转 sql中exists,not exists的用法 exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:  select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成"select 2 from grade where ...",那么返回

sql中group by 和having 用法解析

--sql中的group by 用法解析:-- Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”.--它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理.--注意:group by 是先排序后分组:--举例子说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术select DepartmentID as '部门名称',COUNT(*) a

实战基础技能(11)--------SQL中ISNULL的使用

在敲写相关sql语句时,我们经常会遇到一些空的字符串或者是字段,这就给我们对数据库造成一定的麻烦,系统经常会提示“某值null不能转换”“插入的值不能为空”等等诸如此类的提示,isnull函数会帮助你搞定这些小菜. Isnull 函数主要作用是将为空的值替换为指定值,如果不为空返回检查类型的返回值,isnull的语法: Isnull (check_expression , replacement_value) 参数check_expression ,是待检查是否为空的表达式,参数replacem

SQL中ISNULL的问题。

今天在写SQL代码的时候写了个 ISNULL(变量1,变量2),返回的结果居然是 "*" ,这个星号,郁闷了很久. 代码大意如下: declare @str1 varchar(1) declare @str2 int set @str2=222 select ISNULL(@str1,@str2) 返回结果:" * ",这个郁闷啊. 修改下代码: declare @str1 varchar(4) declare @str2 int set @str2=222 sel

关于SQL中Union和Join的用法

转自帘卷西风的专栏(http://blog.csdn.net/ljxfblog) https://blog.csdn.net/ljxfblog/article/details/52066006 Union UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同. //联合两个表,没有重复 SELECT E_Name FROM Employ

SQL中CONVERT()转化函数的用法 字符串转日期

1 SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM 2 SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06 3 SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16 4 SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06 5 SELECT CONVERT(var

总结sql中in和as的用法

as有两个用法 1 query时,用来返回重新指定的值 example : select id as systemId from user: 2用来copy另外一张表的所有数据 example:create 表 as select * from 表2 in 用来查询所有涵盖该值得所有集合(这个比较常用) select * from 表 where id in ('',''):值可以数字和汉字,可以包含一个或者多个

sql中 substring和charindex 的用法

-- 第一个参数是要截取的字符串,第二个参数是从第几个字符开始截取,第三个参数是截取的长度 --例如:select SUBSTRING('12345678',1,4) 返回 1234 -- select SUBSTRING('12345678',0,4) 则返回 123select SUBSTRING('12345678',1,4) 语法 CHARINDEX ( expression1 , expression2 , [ start_location ] ) 参数 expression1 一个表