Oracel常用NULL相关函数汇总
1. NVL(表达式1,表达式2)
如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。该函数的目的是把一个空值(null)转换成一个实际的值。
其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。
对数字型: NVL(comm,0);
对字符型 NVL(TO_CHAR(comm), 'No Commission')
对日期型 NVL(BirthDay,' 31-DEC-99')
2. NVL2(表达式1,表达式2,表达式3)
如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。
例如 NVL2(comm,'sal+comm',sal),如果comm为空,就返回sal 的值。如果 comm 不为空(null),就返回表达式 sal+comm的值。
3. NULLIF(expr1,expr2)
相等则返回NULL,不相等则返回expr1
4. COALESCE(expr1,expr2,,,exprn)
返回列表中第一个非空表达式。最少两个参数。如果所有的参数都是null,则返回null。
Oracle使用短路运算,它依次对每个表达式求值判断它是否为空,而不是对所有表达式都求值后在判断第一个非空值。
COALESCE函数是NVL函数的一个扩展。
等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END;
5. Select * from emp_tab Where emp_name <> ‘’; --得到空集,应当用emp_name is not null
其它:
1. DECODE函数
decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
Decode函数的语法结构:
decode (expression, search_1, result_1) --IF expression = search_1 Then result_1 else NULL;
decode (expression, search_1, result_1, search_2, result_2) --IF expression = search_1 THEN result_1 ,IF expression = search_2 Then result_2,Else NULL
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)
decode (expression, search_1, result_1, default)
decode (expression, search_1, result_1, search_2, result_2, default)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)
参考:https://www.cnblogs.com/hwaggLee/p/5335967.html
2. 统计函数不能用到Where中,如Where AVG(col1) > 1 --报错
3. GROUP BY后边可以跟函数
4. Having 子名
l 只可以联合Group by用
l 可放至Group by前边或者后边
l Having后边可以跟函数、表达式、比较运算、子查询
l 不能跟嵌套,如 Having count(*) > MAX(AVG(col1)) --报错,不可2层及以上嵌套
5. 使用Natural Join可以连接多个表,只要二个表字段名和类型一样,就自动作为连接条件,但是select后不能用别名
如:Select p.col1 From procducts p Nation Join Sales s; --报错,不可以用限定符