1.DECODE(exp,s1,r1,s2,r2..s,r) 可以把它理解成一个增强型的if else,只不过它并不通过多行语句,而是在一个函数内实现if else的功能。
2.sign(exp) 判断正负数的,如果exp为负数则返回-1,为正数则返回1,为0则返回0;exp可以为number也可以为表达式。
这两个函数都是非常重要的函数也是比较常用的函数,估计大家都已经用过n次了,但是如果把这两个函数结合起来使用就能帮我们完成between and 的功能。
1.用a b c三个变量去实验b在这三个数中的位置(顺序)
SQL> var a number;
SQL> var b number;
SQL> var c number;
SQL> exec :a:=1;:b:=2;:c:=3;
PL/SQL 过程已成功完成。
SQL> select decode(sign(:b-:c)+sign(:b-:a),-2,'最小',-1,'小于等于',0,'中间',1,'
大于等于',2,'最大') from dual;
DECODE(S
--------
中间
SQL> exec :a:=4;:b:=2;:c:=3;
;
PL/SQL 过程已成功完成。
SQL> select decode(sign(:b-:c)+sign(:b-:a),-2,'最小',-1,'小于等于',0,'中间',1,'
大于等于',2,'最大') from dual;
DECODE(S
--------
最小
SQL> exec :a:=1;:b:=2;:c:=-1;
;
PL/SQL 过程已成功完成。
SQL> select decode(sign(:b-:c)+sign(:b-:a),-2,'最小',-1,'小于等于',0,'中间',1,'
大于等于',2,'最大') from dual;
DECODE(S
--------
最大
SQL> exec :a:=2;:b:=2;:c:=3;
;
PL/SQL 过程已成功完成。
SQL> select decode(sign(:b-:c)+sign(:b-:a),-2,'最小',-1,'小于等于',0,'中间',1,'
大于等于',2,'最大') from dual;
DECODE(S
--------
小于等于
SQL> exec :a:=1;:b:=2;:c:=2;
;
PL/SQL 过程已成功完成。
SQL> select decode(sign(:b-:c)+sign(:b-:a),-2,'最小',-1,'小于等于',0,'中间',1,'
大于等于',2,'最大') from dual;
DECODE(S
--------
大于等于
SQL>
可见
sign(:b-:c)+sign(:b-:a)=-2时 b为三个数中最小,
sign(:b-:c)+sign(:b-:a)=-1时 b等于其中一个,小于另一个,
sign(:b-:c)+sign(:b-:a)=0时 b为三个数中中间的一个,
sign(:b-:c)+sign(:b-:a)=1时 b等于其中一个,大于另一个,
sign(:b-:c)+sign(:b-:a)=2时 b为三个数中最大,
这样实现between and 的功能就非常简单了
b between a and c 就等价于 decode(sign(:b-:c)+sign(:b-:a),0,XXX,-1,XXX,1,XXX).
也可以实现判断某个日期是否在某个时间段之间
select decode(sign(months_between(sysdate,sysdate-1)),1,XXX,0,XXXX,1,XXXX) from dual;
分享到:
相关推荐
Oracle 中 Decode() 函数使用技巧 Decode 函数是 Oracle PL/SQL 中的一种功能强大的函数,现只有 Oracle 公司的 SQL 提供了此函数,其他数据库厂商的 SQL 实现还没有此功能。 Decode 函数可以用来实现多种逻辑判断...
### Oracle中Decode()函数的有关用法 #### 一、Decode()函数简介 在Oracle数据库中,`DECODE()`函数是一种非常实用的功能,主要用于条件判断并返回特定的值。它提供了一种简单的方法来实现多分支逻辑判断,尤其是...
Oracle中的DECODE函数是一种非常实用的工具,它允许你在SQL查询中执行简单的条件判断和返回相应的值。这个函数类似于IF-THEN-ELSE语句的简写形式,减少了编写复杂逻辑的代码量,使得SQL语句更加简洁易读。 DECODE...
Oracle数据库中的`Decode()`函数和`CASE`语句都是用于条件判断和数据转换的重要工具,它们各有特点,适用场景也有所不同。以下是对这两个功能的详细比较。 首先,`Decode()`函数是一个简化的条件表达式,它允许你在...
这里DECODE结合`SIGN()`函数使用,`SIGN()`函数返回一个值的符号,-1表示负数,0表示零,1表示正数。DECODE函数根据`var1`和`var2`的大小关系返回不同的值。 ```sql -- 如果var1小于var2,则返回var2,否则返回var...
decode 函数也可以与其他函数结合使用,例如 LPAD 函数,可以实现一些复杂的字符串处理,例如: ```sql SELECT LPAD(DECODE(COUNT(记录编号),0,1,MAX(TO_NUMBER(记录编号)+1)),14,'0') 记录编号 FROM tetdmis ``` ...
Oracle中的DECODE函数是一个非常实用的内置函数,它在SQL查询中起到了类似条件判断的作用,可以简化复杂的逻辑表达式。DECODE函数的基本语法是: ```sql DECODE(条件, 值1, 返回值1, 值2, 返回值2, ..., 值n, ...
DECODE函数是Oracle PL/SQL中的一个独特特性,它在软件开发,尤其是数据库查询中,提供了一种简洁而高效的方法来进行条件判断和数据转换。这个函数在Oracle SQL中扮演了if-then-else逻辑的角色,允许开发者在SQL查询...
Oracle的Decode()函数是PL/SQL中的一个非常实用的工具,尤其对于简化SQL查询和处理逻辑判断具有显著的优势。此函数允许我们在不使用复杂的IF-THEN-ELSE或CASE语句的情况下,实现条件判断和值的转换。由于Oracle是...
在Oracle数据库中,函数和分组是进行数据处理和分析的重要工具。本篇将详细介绍一些常用的Oracle内建函数,特别是字符函数、数字函数以及分组相关的GROUP BY子句和HAVING子句。 首先,我们来看字符函数。字符函数...
本文将详细介绍Oracle中一些最常用的函数及其使用方法,这些函数包括`DECODE`、`ABS`、`CEIL`、`MOD`、`ROUND`、`TRUNC`、`CONCAT`、`LOWER`和`LPAD`。 #### 二、DECODE函数:条件判断与转换 **功能描述**:`...
DECODE 函数是 Oracle PL/SQL 的功能强大的函数之一,目前还只有 Oracle 公司的 SQL 提供了此函数,其他数据库厂商的 SQL 实现还没有此功能。 DECODE 函数的语法是:DECODE(value, if1, then1, if2, then2, if3, ...
在提供的内容中,通过DECODE函数实现了工资的区间判断显示,使用CASE语句完成了加薪规则的计算,还演示了如何使用UNION、INTERSECT和MINUS进行集合操作。这些知识点展示了Oracle在数据处理方面的灵活性和高效性,...
Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的内置函数使得数据处理变得更为便捷。在初学者的旅程中,掌握Oracle常用函数是至关重要的一步。以下是对Oracle数据库中几个核心函数的详细介绍...
Oracle数据库是世界上最广泛使用的数据库管理系统之一,其强大的功能和丰富的语法结构使得开发者能够高效地管理数据。本篇文章将深入探讨Oracle语法的一些关键点,包括序列、DUAL表的使用以及如何查看系统数据。 ...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的内置函数,以支持复杂的查询和数据处理。在Oracle中,函数是执行特定任务的预定义SQL或PL/SQL代码块,它们可以帮助我们处理和转换数据。让我们深入...
这个语句会计算所有银行代码为001的交易值之和。 此外,Decode函数还被应用于PL/SQL代码块中,用于实现多分支逻辑判断: IF DECODE(expression, search1, result1, search2, result2, ..., default) THEN -- 执行...