zoukankan      html  css  js  c++  java
  • Oracle Function: NVL

    Description

    The Oracle/PLSQL NVL function lets you substitute a value when a null value is encountered.

    NVL函数是当出现空值时替换一个值

    Syntax

    NVL( string1, replace_with )

    String1

    The string to test for a null value.

    replace_with

    The value returned if string1 is null.

     

    Example

    For example:

    SELECT NVL(supplier_city, 'n/a')
    FROM suppliers;

    The SQL statement above would return 'n/a' if the supplier_city field contained a null value. Otherwise, it would return the supplier_city value.

    SELECT supplier_id,
    NVL(supplier_desc, supplier_name)
    FROM suppliers;

    This SQL statement would return the supplier_name field if the supplier_desc contained a null value. Otherwise, it would return the supplier_desc.

    SELECT NVL(commission, 0)
    FROM sales;

    This SQL statement would return 0 if the commission field contained a null value. Otherwise, it would return the commission field.

     

    Frequently Asked Questions

    Question:

    Answer:

     I tried to use the NVL function through VB to access Oracle DB.

    To be precise,

    SELECT NVL(Distinct (emp_name),'AAA'),................
    FROM.................

    I got an oracle error when I use distinct clause with NVL, but when I remove distinct it works fine.

    It is possible to the use the DISTINCT clause with the NVL function. However, the DISTINCT must come before the use of the NVL function. For example:

    SELECT distinct NVL(emp_name, 'AAA')
    FROM employees;

    Is it possible to use the NVL function with more than one column with the same function call? To be clear, if i need to apply this NVL function to more than one column like this:

    NVL(column1;column2 ...... , here is the default value for all )

    Answer: You will need to make separate NVL function calls for each column. For example:

    SELECT NVL(table_name, 'not found'), NVL(owner, 'not found')
    FROM all_tables;

    Examine the TRAINING table as given below:

     Name                                      Null?    Type
     ----------------------------------------- -------- -------------

    TRAINING_ID                               NOT NULL NUMBER(5)
     TRAINING_LOCATION                                  NUMBER(7,2)
     START_DATE                                         DATE
     END_DATE                                           DATE

    Which two SQL would execute successfully? (Choose two)

    1. SELECT NVL (ADD_MONTHS (END_DATE,1),SYSDATE) FROM training;
    1. SELECT TO_DATE (NVL(SYSDATE-END_DATE,SYSDATE)) FROM training;
    2. SELECT NVL(MONTHS_BETWEEN(START_DATE,END_DATE),’In Progress’) FROM training;
    1. SELECT NVL(TO_CHAR(MONTHS_BETWEEN(START_DATE,END_DATE)),’In Progress’) FROM training;

     A, D. Use NVL function to provide an alternate value to a column when NULL.

     

    使用DISTINCT 的方法COUNT函数和NVL函数的区别:

    NVL

    SELECT DISTINCT NVL(emp_name, 'AAA')
    FROM employees;

    COUNT

    SELECT COUNT(DISTINCT department) AS "Unique departments"
    FROM employees
    WHERE salary > 55000;

    From <https://www.techonthenet.com/oracle/functions/nvl.php>

  • 相关阅读:
    对于使用secureFX上传文件到centos7 的时候,以及不同的用户解压文件,对于文件操作权限的实验
    搭建分布式hadoop环境的前期准备---需要检查的几个点
    mvc EF
    查询数据库的相关信息
    SQL中PIVOT 行列转换
    sql server 取日期
    c# 类型拷贝
    EF没有同步更新(转)
    怎么计算两个经纬度之间的距离.
    简单日志记录
  • 原文地址:https://www.cnblogs.com/thescentedpath/p/NLV.html
Copyright © 2011-2022 走看看