`

Oracle nvl 函数的用法

阅读更多
oracle的nvl函数的用法

通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值 
select nvl(sum(t.dwxhl),1) from tb_jhde t where zydm=-1
这里关心的nvl的用法,nvl(arg,value)代表如果前面的arg的值为null那么返回的值为后面的value 
如: NVL(a,b)就是判断a是否是NULL,如果不是返回a的值,如果是返回b的值 通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值

另一个有关的有用方法 
declare 
i integer 
select nvl(sum(t.dwxhl),1) into i from tb_jhde t where zydm=-1
这样就可以把获得的合计值存储到变量i中,如果查询的值为null就把它的值设置为默认的1

Oracle下Nvl函数 nvl( ) 函数 从两个表达式返回一个非 null 值。 
语法 
NVL(eExpression1, eExpression2) 
参数 
eExpression1, eExpression2 
如 果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。 
返回值类型 
字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值 
说明 
在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。 select nvl(a.name,'空得') as name from student a join school b on a.ID=b.ID 注意:两个参数得类型要匹配 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL, 我们称它为空,ORACLE中,含有空值的表列长度为零。
ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:

1、主键字段(primary key),

2、定义时已经加了NOT NULL限制条件的字段

说明:

1、等价于没有任何值、是未知数。

2、NULL与0、空字符串、空格都不同。

3、对空值做加、减、乘、除等运算操作,结果仍为空。

4、NULL的处理使用NVL函数。

5、比较时使用关键字用“is null”和“is not null”。

6、空值不能被索引,所以查询时有些符合条件的数据可能查不出来, count(*)中,用nvl(列名,0)处理后再查。

7、排序时比其他数据都大(索引默认是降序排列,小→大), 所以NULL值总是排在最后。
使用方法: 
SQL> select 1 from dual where null=null; 没有查到记录 
SQL> select 1 from dual where null=''; 没有查到记录 
SQL> select 1 from dual where ''=''; 没有查到记录 
SQL> select 1 from dual where null is null; 1 --------- 1 
SQL> select 1 from dual where nvl(null,0)=nvl(null,0); 1 --------- 1 
对空值做加、减、乘、除等运算操作,结果仍为空。 
SQL> select 1+null from dual; 
SQL> select 1-null from dual; 
SQL> select 1*null from dual; 
SQL> select 1/null from dual; 查询到一个记录. 注:这个记录就是SQL语句中的那个null 设置某些列为空值 update table1 set 列1=NULL where 列1 is not null; 
现有一个商品销售表sale

表结构为: month  char(6)  --月份 sellnumber(10,2) --月销售金额

create table sale (month char(6),sell number);
insert into sale values('200001',1000);
insert into sale values('200002',1100);
insert into sale values('200003',1200);
insert into sale values('200004',1300);
insert into sale values('200005',1400);
insert into sale values('200006',1500);
insert into sale values('200007',1600);
insert into sale values('200101',1100);
insert into sale values('200202',1200);
insert into sale values('200301',1300);
insert into sale values('200008',1000);
insert into sale(month) values('200009'); (注意:这条记录的sell值为空) 
SQL> select * from sale where sell like '%';

MONTH        SELL
------ ----------
200001       1000
200002       1100
200003       1200
200004       1300
200005       1400
200006       1500
200007       1600
200101       1100
200202       1200
200301       1300
200008       1000

11 rows selected.
查询到11记录. 结果说明: 查询结果说明此SQL语句查询不出列值为NULL的字段 此时需对字段为NULL的情况另外处理。 

SQL> select * from sale where sell like '%' or sell is null;
SQL> select * from sale where NVL(sell, 0) like '%';

MONTH        SELL
------ ----------
200001       1000
200002       1100
200003       1200
200004       1300
200005       1400
200006       1500
200007       1600
200101       1100
200202       1200
200301       1300
200008       1000

MONTH        SELL
------ ----------
200009

12 rows selected.

Oracle的空值就是这么的用法,我们最好熟悉它的约定,以防查出的结果不正确
分享到:
评论

相关推荐

    oracle中nvl、decode、trim、rtrim的常见用法

    我们可以使用NVL函数来处理这种情况: ```sql SELECT employee_id, NVL(salary, 0) AS salary FROM employees; ``` 在这个例子中,如果`salary`是NULL,那么将被替换为0。 #### DECODE函数 DECODE函数类似于一个...

    oracle内置函数学习

    Oracle内置函数是数据库管理系统Oracle中不可或缺的一部分,它们用于执行各种数据处理任务,包括数学运算、字符串操作、日期...因此,建议定期查阅官方文档,不断探索和尝试新的函数用法,以适应不断变化的业务需求。

    nvl的相关函数描述

    1. **NVL函数** `NVL(expr1, expr2)` 是一个非常常用的函数,它的作用是当`expr1`为NULL时,返回`expr2`的值,否则返回`expr1`的值。这里的`expr1`和`expr2`都应该是相同的数据类型,以确保返回值的类型一致性。在...

    ORACLE函数及其用法

    ### ORACLE函数及其用法详解 #### 概述 Oracle是一种广泛使用的数据库管理系统,它提供了丰富的内置函数,这些函数能够帮助开发者和数据库管理员更高效地处理数据。本文将详细介绍Oracle中的一些常用函数及其应用...

    oracle函数大全.doc

    Oracle 函数大全 Oracle 函数大全是 Oracle 数据库管理系统中的一系列函数,...本文档中还介绍了更多的单行函数和组函数,详细的讲解了每个函数的使用方法和示例代码,为开发者提供了一个 Oracle 函数大全的参考手册。

    Oracle中的INSTR,NVL和SUBSTR函数的用法详解

    NVL函数用于处理NULL值,它将检查提供的表达式是否为NULL,如果是,它将返回第二个参数的值。基本语法为: ```sql NVL(expression, replacement_value) ``` - `expression`:可能为NULL的表达式。 - `...

    浅谈mysql可有类似oracle的nvl的函数

    `NVL` 函数是 Oracle 数据库特有的,它的基本用法是 `NVL(expression1, expression2)`。如果 `expression1` 为 NULL,`NVL` 将返回 `expression2` 的值;否则,返回 `expression1` 的值。这个函数常用于在查询时避免...

    Oracle内置函数大全.rar

    Oracle内置函数可以分为多种类型,包括算术函数、字符串函数、日期时间函数、转换函数、系统信息函数、控制结构函数等。这些函数在SQL查询、数据处理和存储过程编写中扮演着关键角色。 1. **算术函数**:例如`+`、`...

    oracle 内置函数大全

    Oracle数据库系统是世界上最广泛使用的...在"oracle内置函数大全.sql"文件中,可能包含了所有这些函数的示例和用法,供用户参考和实践。通过深入研究这个文件,可以深入了解Oracle SQL的功能,并提升数据库管理技能。

    oracle最常用的函数或方法总结

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其丰富的函数和方法库为SQL查询提供了强大的支持。在日常的数据操作和分析中,掌握一些常用的Oracle函数和方法是至关重要的。以下是对"Oracle最常用的...

    Oracle几个很有用的特殊函数使用方法,经验只谈

    以上只是Oracle特殊函数中的一部分,实际应用中还有许多其他函数,如 `DECODE`、`CASE` 语句等,可以根据具体需求灵活选择和组合使用。熟练掌握这些函数,能有效提高在Oracle SQL中的编程效率和数据处理能力。在实际...

    几个常用的Oracle函数及实例运用

    这段代码使用了NVL函数来确保`SUM(c.f_factplan)`的结果即使为NULL也能返回0。 ##### 2. TO_CHAR 函数 TO_CHAR 函数用于将日期或数值转换为字符。 - **语法**: ```sql TO_CHAR(date_or_numeric_expr, format_...

    深入浅析Orcale的nvl函数和SQL Server的isnull函数

    Oracle的NVL函数用于处理NULL值,其语法为`NVL(Expr1, Expr2)`。这个函数的基本逻辑是:如果`Expr1`的值为NULL,那么NVL函数返回`Expr2`的值;否则,它返回`Expr1`的原始值。如果`Expr1`和`Expr2`同时为NULL,NVL...

    oracle函数大全(分类成9个word文档)

    5. "oracle函数介绍(6) 著名函数之分析函数.doc"和"oracle函数介绍(7) 非著名函数之分析函数.doc"会进一步详细讨论这些高级函数,可能包括窗口函数的用法和实例。 6. "oracle函数介绍(8) 综述.doc"应该是对前面所有...

    oracle函数大全(分类显示).zip_Oracle 函数分类_oracle_oracle函数分类_oracle函数查阅用文档

    通过这份"oracle函数大全(分类显示).chm"文档,你可以详细了解到每个函数的具体用法、参数和返回值,从而更好地理解和应用到实际的数据库操作中。随着对Oracle的理解加深,你会发现这些函数能极大地提高你的数据库...

    oracle函数大全中文

    通过"Oracle函数大全(分类显示).chm"这个文档,你可以全面了解并掌握这些函数的使用方法和应用场景,从而更好地在Oracle数据库中进行数据操作和查询。这个资源对于数据库管理员、开发人员和数据分析者来说都是非常...

    SQLServer和Oracle的常用函数对比

    本文将基于给定文件信息,深入探讨和对比SQLServer与Oracle中的一些常用函数,这些函数涵盖了数学运算、数值处理、字符串操作等多个方面,对于数据库开发者和管理员而言,掌握这些函数的使用方法是提升工作效率的...

    SQL语句的DECODE和NVL

    本文将详细介绍 DECODE 和 NVL 函数的使用方法和实践应用。 一、DECODE 函数 DECODE 函数是 Oracle 公司独家提供的功能,它是一个功能很强的函数,可以实现复杂的逻辑判断和数据处理。DECODE 函数的语法如下: ...

    ORACLE内部函数大全以及与SQLSERVER的区别

    - `NVL/ISNULL`: 用于处理 NULL 值,Oracle 使用 `NVL`,SQL Server 使用 `ISNULL`。 3. **转换函数** - `TO_CHAR/CONVERT`: Oracle 和 SQL Server 都提供了将数字转换为字符串的函数。 - `TO_NUMBER/CONVERT`:...

    ORACLE单行函数和组函数

    解决这个问题的方法是使用NVL函数: ```sql UPDATE emp SET salary = (salary + NVL(bonus, 0)) * 1.1; ``` #### 四、组函数 组函数(聚合函数)用于对一组行的数据进行统计分析,常见的包括: - **COUNT()**: 统计...

Global site tag (gtag.js) - Google Analytics