decode与case的区别
如果条件都是“=”,用decode方便,如果涉及其它运算符,则cse更方便。
在使用Oracle10g时发现,decode中的项目不能超过250个。
如将系统1的地市编码转化为系统2的地市编码,数目可能会超过250个。
·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
当x等于1时,则返回‘x is 1’。
当x等于2时,则返回‘x is 2’。
否则,返回others’。
在需要比较2个值的时候,我们可以配合SIGN()函数一起使用。
SELECT DECODE( SIGN(5 -6), 1 'Is Positive', -1, 'Is Nagative', 'Is Zero')
同样,也可以用CASE实现:
SELECT CASE SIGN(5 - 6)
WHEN 1 THEN 'Is Positive'
WHEN -1 THEN 'Is Nagative'
ELSE 'Is Zero' END
FROM DUAL
比较大小函数 sign
函数语法:
sign(n)
函数说明:
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
示例:
一、select sign( 100 ),sign(- 100 ),sign( 0 ) from dual;
SIGN(100) SIGN(-100) SIGN(0)
———- ———- ———-
1 -1 0
则sign(a-b)返回-1
函数介绍
DECODE函数是ORACLE PL/SQL的功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能。DECODE有什么用途呢?先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的加20%;工资在8000元或以上的加15%,通常的做法是,先选出记录中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下:select decode(sign(salary - 8000),>=0,salary*1.15,<0,salary*1.2,salary) from employee 是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
相关推荐
Oracle数据库中的`Decode()`函数和`CASE`语句都是用于条件判断和数据转换的重要工具,它们各有特点,适用场景也有所不同。以下是对这两个功能的详细比较。 首先,`Decode()`函数是一个简化的条件表达式,它允许你在...
Oracle中的DECODE函数是一种非常实用的工具,它允许你在SQL查询中执行简单的条件判断和返回相应的值。这个函数类似于IF-THEN-ELSE语句的简写形式,减少了编写复杂逻辑的代码量,使得SQL语句更加简洁易读。 DECODE...
在提供的内容中,通过DECODE函数实现了工资的区间判断显示,使用CASE语句完成了加薪规则的计算,还演示了如何使用UNION、INTERSECT和MINUS进行集合操作。这些知识点展示了Oracle在数据处理方面的灵活性和高效性,...
#### 二、DECODE函数:条件判断与转换 **功能描述**:`DECODE`函数用于实现多条件判断,类似于编程语言中的`switch-case`语句。其语法如下: ``` DECODE(条件, 值1, 翻译值1, 值2, 翻译值2, ..., 值n, 翻译值n, ...
Decode函数是Oracle数据库中用于实现条件逻辑的一个内置函数,它类似于编程语言中的switch-case语句或if-then-else语句。Decode函数可以对给定的表达式进行多个条件判断,并返回匹配条件的相应值。Decode函数广泛...
DECODE 函数是 Oracle 公司独家的功能强大的函数,它提供了简洁的运算方式、可控的数据模型和灵活的格式转换。DECODE 函数是 Oracle PL/SQL 的功能强大的函数之一,目前还只有 Oracle 公司的 SQL 提供了此函数,其他...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的内置函数,以支持复杂的查询和数据处理。在Oracle中,函数是执行特定任务的预定义SQL或PL/SQL代码块,它们可以帮助我们处理和转换数据。让我们深入...
DECODE函数在Oracle数据库中非常灵活,可以根据不同的需求进行条件判断和值的转换,极大地简化了SQL查询的复杂性。它可以处理多个条件,同时返回一个明确的结果,是数据库查询中不可或缺的一部分。
此外,Oracle还提供了许多其他类型的函数,例如与环境信息和条件判断相关的函数。 - **dump**: 返回有关列的详细信息。 - **greatest/least**: 返回给定表达式列表中的最大值和最小值。 - **nvl/nvl2**: 在参数为...
Oracle是一种广泛使用的数据库管理系统,它提供了丰富的内置函数,这些函数能够帮助开发者和数据库管理员更高效地处理数据。本文将详细介绍Oracle中的一些常用函数及其应用场景。 #### 数值型函数 1. **ABS(X)**:...
- `DECODE`: 类似于CASE WHEN语句,用于条件判断和返回相应的值。 - 示例:`SELECT DECODE('11', '22', 'BB', '33', 'CC', 'DD') FROM DUAL;` - `SIGN`: 返回数值的符号,正数为1,0为0,负数为-1。 - 示例:`...
Oracle的Decode()函数是PL/SQL中的一个非常实用的工具,尤其对于简化SQL查询和处理逻辑判断具有显著的优势。此函数允许我们在不使用复杂的IF-THEN-ELSE或CASE语句的情况下,实现条件判断和值的转换。由于Oracle是...
第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 分区 第19章 Oracle基本安全 第Ⅲ部分 高级主题 第20章 高级安全性-虚拟专用数据库 第21章 高级安全性:透明数据加密...
第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 分区 第19章 Oracle基本安全 第Ⅲ部分 高级主题 第20章 高级安全性-虚拟专用数据库 第21章 高级安全性:透明数据加密...
`SIGN`函数用于获取数值表达式的正负号,可以和`DECODE`函数结合使用,从而实现对数值范围的判断逻辑。 Oracle数据库的分页查询可以通过使用`ROWNUM`伪列来实现。`ROWNUM`是一个在查询结果集中生成行号的伪列,非常...
同时,DECODE函数可以与SIGN函数结合使用,比较两个值的正负: ``` SELECT DECODE(SIGN(5 - 6), 1, 'Is Positive', -1, 'Is Negative', 'Is Zero') FROM dual; ``` 或者使用CASE语句实现相同的效果: ``` ...
此外,还可以使用 `DECODE` 函数与 `SIGN()` 结合来比较字段大小,如: ```sql SELECT DECODE(SIGN(字段1 - 字段2), -1, 字段3, 字段4) FROM dual; ``` 这可以帮助在没有 `CASE WHEN` 的情况下执行简单的条件判断。 ...
`DECODE` 和 `CASE` 函数都可以用来实现条件判断。 **语法示例**: ```sql SELECT DECODE(sign(Emp_ID - 3), 1, '>', 0, '=', ') FROM employees; ``` 这里使用 `DECODE` 函数来根据 `Emp_ID` 与 3 的比较结果来显示...