Oracle-Decode()函数和CASE语句的不同
2010-08-11 19:48
417 查看
Oracle-Decode()函数和CASE语句的区别:
具体示例如下:
1.CASE语句:
SELECT CASE SIGN(5 - 5)
WHEN 1 THEN 'Is Positive'
WHEN -1 THEN 'Is Negative'
ELSE 'Is Zero' END
FROM DUAL;
后台实现:
if (SIGN(5 – 5) = 1) {
'Is Positive';
} else if (SIGN(5 – 5) = 2 ) {
'Is Negative';
}else {
‘Is Zero’
}
2. Decode函数:
SELECT DECODE(SIGN(5 – 5), 1, 'Is Positive', -1, 'Is Negative', ‘Is Zero’)
FROM DUAL
后台实现:
switch ( SIGN(5 – 5) )
{
case 1 : 'Is Positive'; break;
case 2 : 'Is Negative'; break;
default : ‘Is Zero’
}
虽然在上面的示例中,两者看似都可以实现。但在遇到特殊情况时,Decode()的实现就相对复杂得多了。
例如:
SELECT CASE X-FIELD
WHEN X-FIELD < 40 THEN ‘X-FIELD < 40’
WHEN X-FIELD < 50 THEN ‘X-FIELD < 50’
WHEN X-FIELD < 60 THEN ‘X-FIELD < 60’
ELSE ‘UNBEKNOWN’END
FROM DUAL
相对而言,CASE语句在处理相似问题就显得比较简捷灵活。另外,当需要匹配少量数值时,选用Decode会更加方便一些。
具体示例如下:
1.CASE语句:
SELECT CASE SIGN(5 - 5)
WHEN 1 THEN 'Is Positive'
WHEN -1 THEN 'Is Negative'
ELSE 'Is Zero' END
FROM DUAL;
后台实现:
if (SIGN(5 – 5) = 1) {
'Is Positive';
} else if (SIGN(5 – 5) = 2 ) {
'Is Negative';
}else {
‘Is Zero’
}
2. Decode函数:
SELECT DECODE(SIGN(5 – 5), 1, 'Is Positive', -1, 'Is Negative', ‘Is Zero’)
FROM DUAL
后台实现:
switch ( SIGN(5 – 5) )
{
case 1 : 'Is Positive'; break;
case 2 : 'Is Negative'; break;
default : ‘Is Zero’
}
虽然在上面的示例中,两者看似都可以实现。但在遇到特殊情况时,Decode()的实现就相对复杂得多了。
例如:
SELECT CASE X-FIELD
WHEN X-FIELD < 40 THEN ‘X-FIELD < 40’
WHEN X-FIELD < 50 THEN ‘X-FIELD < 50’
WHEN X-FIELD < 60 THEN ‘X-FIELD < 60’
ELSE ‘UNBEKNOWN’END
FROM DUAL
相对而言,CASE语句在处理相似问题就显得比较简捷灵活。另外,当需要匹配少量数值时,选用Decode会更加方便一些。
相关文章推荐
- Oracle-Decode()函数和CASE语句的不同
- Oracle-Decode()函数和CASE语句的不同
- oracle里面如何写case语句及decode and sign 函数用法
- Oracle Decode()函数和CASE语句的比较
- Oracle-Decode()函数和CASE语句的比较
- oracle -- case语句--decode and sign 函数
- Oracle Decode()函数和CASE语句的比较
- Oracle-Decode()函数和CASE语句的比较
- oracle里面如何写case语句及decode and sign 函数用法
- Oracle Decode()函数和CASE语句的比较
- oracle:case 语句使用(用于select子句的case语句中可以使用in这个函数)
- Oracle nvl、nvl2、nullif、decode、case函数详解
- Decode()函数和CASE语句的比较
- oracle函数之case和decode的用法区别及性能比较
- 关于oracle中查询语句 decode和 case when 的用法
- Mysql-通过case..when实现oracle decode()函数进行多值多结果判断
- oracle函数之case和decode的用法区别及性能比较
- oracle的case函数控制结构DECODE()函数
- sql语句中decode()函数的嵌套(oracle)
- Oracle sql语句中不支持boolean类型(decode&case)