针对Oracle中nvl函数的用法和oracle.nvl这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展oraclenvl,nvl2,coalesce几个函数的区别、OracleNVL函数详
针对Oracle中nvl函数的用法和oracle. nvl这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展oracle nvl,nvl2,coalesce几个函数的区别、Oracle NVL函数详解及用法示例、Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解、ORACLE——NVL()、NVL2() 函数的用法等相关知识,希望可以帮助到你。
本文目录一览:- Oracle中nvl函数的用法(oracle. nvl)
- oracle nvl,nvl2,coalesce几个函数的区别
- Oracle NVL函数详解及用法示例
- Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解
- ORACLE——NVL()、NVL2() 函数的用法
Oracle中nvl函数的用法(oracle. nvl)
1.NULL空值概念
数据库里有一个很重要的概念:空值即NULL。有时表中,更确切的说是某些字段值,可能会出现空值, 这是因为这个数据不知道是什么值或根本就不存在。
2.NULL空值判断
空值不等同于字符串中的空格,也不是数字类型的0 。因此,判断某个字段值是否为空值时不能使用=,<>,in,not in这些判断符,如果非要用的话,可以用NVL(column_name,''sfd'')<>''4''表示就可以了。必需有专用的短语:IS NULL 来选出有空值字段的记录,同理,可用 IS NOT NULL 选出不包含空值的记录。如:
SELECT *FROM party WHERE leader IS NULL;
SELECT *FROM party WHERE leader IS NOT NULL;
3.空值转换
Oracle :
Nvl
NVL函数: NVL函数是将NULL值的字段转换成默认字段输出。
NVL(expr1,expr2)
expr1,需要转换的字段名或者表达式。
expr2,null的替代值
下面是NUMBER, DATE, CHAR OR VARCHAR2的例子:
NVL(commission_pct,0)
NVL(hire_date,''01-JAN-97'')
NVL(job_id,''No Job Yet'')
oracle nvl,nvl2,coalesce几个函数的区别
1.nvl(exp1,exp2)
该函数是处理表达式中的空值:
假设表达式exp1是空值,则该函数返回表达式exp2的值,
假设表达式exp1没有是空值,则该函数返回表达式exp1的值。
2.nvl2(exp1,exp2,exp3)
该函数决定exp1是空值和非空值时返回哪个表达式:
假设exp1为空值,则返回exp3
假设exp1非空,返回exp2。
3.coalesce(exp1,exp2,.....)
该函数 返回 表达式中第一个非空值,假设都是空值,则返回空值,表达式最少是两个。
测试语句:
1 -- nvl
2 select nvl(''1'',''2'') from dual;
3
4 select nvl(null,''2'') from dual;
5
6 -- nvl2
7 select nvl2(''1'',''2'',''3'') from dual;
8
9 select nvl2(null,''2'',''3'') from dual;
10
11 -- coalesce
12 select coalesce(''是'',null,''否'') from dual;
13
14 select coalesce(null,''是'',''否'') from dual;
15
16 select coalesce(null,null,''否'') from dual;
17
18 select coalesce(null,null,null) from dual;
Oracle NVL函数详解及用法示例
Oracle NVL函数详解及用法示例
在Oracle数据库中,NVL函数是一种非常常用的函数,其作用是用于判断一个值是否为null,若为null则返回另一个指定的值。本文将详细介绍NVL函数的语法、用法及提供一些示例代码以帮助读者更好地理解和应用NVL函数。
1. NVL函数语法
NVL函数的语法如下:
NVL(expr1, expr2)
其中,expr1是要判断的值,如果为null则返回expr2,否则返回expr1。
2. NVL函数用法示例
示例一:将null值替换为指定值
SELECT NVL(salary, 0) AS salary_new FROM employees;
在上面的示例中,如果employees表中的salary字段为null,NVL函数将其替换为0。
示例二:条件判断
SELECT employee_name, NVL(salary, 0) AS salary FROM employees WHERE department = ''IT'';
这个示例中,NVL函数用于判断员工的工资是否为null,如果是null,则替换为0。同时,通过WHERE子句筛选出部门为IT的员工信息。
示例三:嵌套NVL函数
SELECT NVL(NVL(salary, 0) + NVL(bonus, 0), 0) AS total_income FROM employees;
在这个示例中,NVL函数被嵌套使用,先判断salary和bonus字段是否为null,然后进行加法操作,最后将结果替换为0。
3. 总结
通过本文的介绍,读者应该对Oracle数据库中的NVL函数有了更深入的了解。NVL函数在处理null值时非常有用,能够简洁地实现对字段的判断和替换操作。读者可以根据具体业务需求灵活运用NVL函数,提高SQL查询的效率和准确性。
希望本文对读者有所帮助,让大家对NVL函数有更清晰的认识和运用。感谢阅读!
以上就是Oracle NVL函数详解及用法示例的详细内容,更多请关注php中文网其它相关文章!
Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解
NVL(EXPR1,EXPR2) NVL2(EXPR1,EXPR2,EXPR3) NULLIF(EXPR1,EXPR2) COALESCE(EXPR1,,..,EXPRn) decode --------NVL nvl(COMMISSION_PCT,0) 如果第一个参数为null,则返回第二个参数 如果第一个参数为非null,则返回第一个参数 经典示例:计算年薪(工资提成
NVL(EXPR1,EXPR2)NVL2(EXPR1,EXPR2,EXPR3)
NULLIF(EXPR1,EXPR2)
COALESCE(EXPR1,,..,EXPRn)
decode
--------NVL
nvl(COMMISSION_PCT,0)
如果第一个参数为null,则返回第二个参数
如果第一个参数为非null,则返回第一个参数
经典示例:计算年薪(工资+提成)
SELECT LAST_NAME,SALARY,NVL(COMMISSION_PCT,0),
(SALARY*12)+(SALARY*12*NVL(COMMISSION_PCT,0)) ANNUAL_SALARY
FROM EMPLOYEES
WHERE LAST_NAME=''Matos'';
--------NVL2
NVL2(COMMISSION_PCT,''SAL_COMM'',''SAL'')
如果第一个参数为null,则返回第三个参数
如果第一个参数为非null,则返回第二个参数
经典示例:
SELECT LAST_NAME,SALARY,COMMISSION_PCT,
NVL2(COMMISSION_PCT,''SAL+COMM'',''SAL'') INCOME
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (50,80);
---------NULLIF
nullif(length(first_name),length(last_name))
如果两个参数值相等,则返回 null
如果两个参数不等,则返回第一个表达式值
SELECT FIRST_NAME ,LENGTH(FIRST_NAME) "EXPR1",
LAST_NAME, LENGTH(LAST_NAME) "expr2",
nullif(length(first_name),length(last_name)) result
FROM EMPLOYEES;
---------COALESCE
COALESCE(EXPR1,EXPR2,EXPR3...EXPRn)
从左往右数,遇到第一个非null值,则返回该非null值。
多层判断
SELECT LAST_NAME,EMPLOYEE_ID,
COALESCE(TO_CHAR(commission_pct),TO_CHAR(manager_id),
''No commission and no manager'')
FROM EMPLOYEES;
---------------------------------
-----------条件表达式
IF-THEN-ELSE
CASE 语句(SQL标准,编写繁杂)
DECODE 函数
DECODE(COL|EXPRESSION,SERACH1,RESULT1
[,search2,result2,...,]
[,default])
如果 search1 = expression 则返回 result1
如果 search2 = expression 则返回 result2
---------CASE
示例:
SELECT LAST_NAME,JOB_ID,SALARY,
CASE JOB_ID WHEN ''IT_PROG'' THEN 1.10*SALARY
WHEN ''ST_CLERK'' THEN 1.15*SALARY
WHEN ''SA_REP'' THEN 1.20*SALARY
ELSE SALARY END "REVISED SALARY"
FROM EMPLOYEES;
---------DECODE
示例:
DECODE函数的作用:它可以将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。
区别于SQL的其它函数,DECODE函数还能识别和操作空值。
语法如下:
DECODE(control_value,value1,result1[,value2,result2…][,default_result]);
control _value
试图处理的数值。DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。
value1
是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result1
是一组成序偶的结果值。
default_result 未能与任何一个值匹配时,函数返回的默认值。
示例如下:
select decode( x , 1 , ‘x is 1 ’, 2 , ‘x is 2 ’, ‘others’) from dual
http://blog.csdn.net/xiangsir/article/details/8601513
ORACLE——NVL()、NVL2() 函数的用法
NVL和NVL2两个函数虽然不经常用,但是偶尔也会用到,所以了解一下。
语法:
--如果表达式1为空则显示表达式2的值,如果表达式1不为空,则显示表达式1的值
NVL(表达式1,表达式2);
--如果字段1为空,则显示字段2的值,如果字段1不为空则显示字段1的值
NVL(字段1,字段2);
--如果表达式1为空,则显示表达式2的值,如果不为空则显示表达式3的值
NVL2(表达式1,表达式2,表达式3)
--如果字段1为空则显示字段2的值,如果字段1不为空则显示字段3的值
NVL2(字段1,字段2,字段3)
比如有表:SYS_USER_INFO,表中有其中三个字段:REAL_NAME,NICK_NAME,NET_NAME。
需求;如果REAL_NAME为空,则查询NET_NAME,不为空则查询REAL_NAME:
SELECT NVL(REAL_NAME,NET_NAME) AS NAME FROM SYS_USER_INFO
在项目中有时需要在查询时预留几个备用字段,也可以通过NVL2来实现,如:
NVL2(''SPARE'','''','''') AS SPARE
这样无论如何都会有个SPARE为空的字段。
我们今天的关于Oracle中nvl函数的用法和oracle. nvl的分享已经告一段落,感谢您的关注,如果您想了解更多关于oracle nvl,nvl2,coalesce几个函数的区别、Oracle NVL函数详解及用法示例、Oracle 中 nvl、nvl2、nullif、coalesce、decode 函数的用法详解、ORACLE——NVL()、NVL2() 函数的用法的相关信息,请在本站查询。
本文标签: