通用函数和条件表达式

简介: 一、通用函数 函数 说明 NVL 语法:NVL(expr1,expr2) 说明:如果expr1为NULL,则该函数显示expr2的值; 例子:SELECT SALARY, NVL(TO_CHAR(COMMISSION_PCT), 0) FROM EMPLO.

一、通用函数

函数 说明
NVL 语法:NVL(expr1,expr2)
说明:如果expr1为NULL,则该函数显示expr2的值;

例子:

SELECT SALARY, NVL(TO_CHAR(COMMISSION_PCT), 0) FROM EMPLOYEES;
NVL2 语法:NVL2(expr1,expr2,expr3)
说明:如果expr1的值为NULL,则该函数显示expr3的值;不为NULL,显示expr2的值;

例子:

SELECT LAST_NAME,
       SALARY,
       COMMISSION_PCT,
       NVL2(COMMISSION_PCT, 'SAL+COMM', 'SAL') INCOME
  FROM EMPLOYEES
 WHERE DEPARTMENT_ID IN (50, 80);
NULLIF 语法:NULLIF(expr1,expr2)
说明:如果expr1=expr2,返回NULL;若不等,则返回第一个表达式的值;

例子:

SELECT FIRST_NAME,
       LENGTH(FIRST_NAME) "expr1",
       LAST_NAME,
       LENGTH(LAST_NAME) "expr2",
       NULLIF(LENGTH(FIRST_NAME), LENGTH(LAST_NAME)) RESULT
  FROM EMPLOYEES;
COLESCE 语法:COALSECE(expr1,expr2,expr3)
说明:如果全为NULL,则函数值为NULL;若有一项不为NULL,则显示那一项exprN;若三项都不为空,则显示最前面的一项expr;

例子:

SELECT COALESCE(NULL, 1, 2, 3, 4) FROM DUAL;

SELECT COALESCE(NULL, NULL, 2, 3, 4) FROM DUAL;

二、条件表达函数

函数 说明
CASE 语法:
CASE expr 
  WHEN comparison_expr1THEN return_expr1
  [WHENcomparison_expr2 THENreturn_expr2
  WHENcomparison_exprn THENreturn_exprn
  ELSE else_expr]
END
说明:
1、对已知的数据库中数据,按照自己的逻辑,进行自定义分组和数据分析
2、用此条件控制语句,实现自定义条件分组
3、条件控制语句中嵌套函数达到理想的计算效果

例句:

SELECT last_name,salary, 
       (CASE WHEN salary<5000 THEN 'Low' 
             WHEN salary<10000 THEN 'Medium' 
             WHEN salary<20000 THEN 'Good' 
             ELSE 'Excellent' 
       END) qualified_salary 
FROM employees;
DECODE 语法:
DECODE(col|expression, search1, result1
        [, search2, result2,...,]
        [, default])
说明:decode 具有和 IF-THEN-ELSE 一样的功能。

例句:

SELECT PRODUCT_ID,
       DECODE(WAREHOUSE_ID, 
              1, 'Southlake',
              2, 'San Francisco',
              3, 'New Jersey',
              4, 'Seattle',
              'Non-domestic') "Location of inventory"    
  FROM INVENTORIES    
 WHERE PRODUCT_ID < 1775;

三、嵌套函数

例句:

SELECT LAST_NAME,
      SALARY,
      DECODE(TRUNC(SALARY / 2000, 0),
              0, 0.00,
              1, 0.09,
              2, 0.20,
              3, 0.30,
              4, 0.40,
              5, 0.42,
              6, 0.44,
              0.45) TAX_RATE
  FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80;

目录
相关文章
|
4天前
条件循环语句有哪些?语法?区别?
条件循环语句有哪些?语法?区别?
7 0
|
3月前
|
C#
C#动态查询:巧用Expression组合多条件表达式
在C#中,利用`Expression`类和`AndAlso`、`OrElse`方法,可以组合两个`Expression&lt;Func&lt;T, bool&gt;&gt;`以实现动态多条件查询。该方法通过构建表达式树,方便地构建复杂查询。示例代码展示了如何创建表达式树,分别检查年龄大于等于18和姓名为&quot;John&quot;的条件,并使用`AndAlso`组合这两个条件,最终编译为可执行的委托进行测试。
101 1
|
3月前
|
Python
什么是语句?什么是表达式?怎么区分?
编程语言中的语句和表达式是基础概念。语句是执行操作或命令的代码行,如Python的`print("Hello, World!")`,通常以换行符结束。表达式则表示值或计算过程,如`2 + 2`,可赋值给变量或用于计算。语句侧重于执行动作,表达式侧重于计算值。表达式可含运算符、变量等,而语句由主语和谓语构成。示例中,`x = 10`和`print("Hello, World!")`是语句,`y = x + 5`和`result = a * b + c`是表达式。
|
Java
高效实现区间条件过滤:Java字符串转换为条件语句
高效实现区间条件过滤:Java字符串转换为条件语句
71 0
|
3月前
|
前端开发
简化 if true...else 条件表达式
简化 if true...else 条件表达式
|
3月前
|
存储 程序员 编译器
【新手解答5】深入探索 C 语言:宏中的文本、标识符和字符串 + 递归运算、条件语句、循环 + `switch-case` 与多项条件和枚举的差别
【新手解答5】深入探索 C 语言:宏中的文本、标识符和字符串 + 递归运算、条件语句、循环 + `switch-case` 与多项条件和枚举的差别
69 0
|
10月前
|
算法
6.解析表达式算法
6.解析表达式算法
|
数据库
机房重构—在应使用条件的上下文(在 ‘where‘ 附近)中指定了非布尔类型的表达式
在应使用条件的上下文(在 ‘where‘ 附近)中指定了非布尔类型的表达式
155 0
|
前端开发
Less预处理——继承、导入、条件表达式和函数
Less预处理——继承、导入、条件表达式和函数
259 0
|
Java Maven Ruby
去掉复杂的逻辑计算,get一下Aviator吧
去掉复杂的逻辑计算,get一下Aviator吧
447 0