oracle 中decode 是啥意思啊,有什么用啊,好晕啊!
4个回答
展开全部
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),1,salary*1.15,-1,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的一个函数,用来实现判断结构的程序功能。具体你可以参考百科词条
http://baike.baidu.com/view/1130040.htm
http://baike.baidu.com/view/1130040.htm
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DECODE 条件判断函数, 相当于在 SQL 语句里面,写 IF / ELSE
SQL> SELECT
2 DECODE(GROUPING(sale_item), 1, 'ALL', sale_item) AS iten,
3 SUM(sale_money) AS money
4 FROM
5 sale_report
6 GROUP BY
7 ROLLUP(sale_item);
ITEN MONEY
------ ----------
A 733285
B 2382
C 5738
ALL 741405
以上面这个 DECODE(GROUPING(sale_item), 1, 'ALL', sale_item) 为例子来说
就是 如果 GROUPING(sale_item) = 1 那么 返回 'ALL', 否则返回 sale_item
DECODE 的功能, 可以说是 取代 CASE WHEN 的功能。
下面就是 SQL Server 下, 没有 DECODE 的功能, 用 CASE WHEN 写的
1> SELECT
2> CASE
3> WHEN GROUPING(sale_item) = 1
4> THEN '总'
5> ELSE
6> sale_item
7> END AS item,
8> SUM(sale_money) [money]
9> FROM
10> sale_report
11> GROUP BY
12> sale_item WITH ROLLUP;
13> go
item money
---- ----------------------------------------
A 733285.00
B 2382.00
C 5738.00
总 741405.00
(4 行受影响)
SQL> SELECT
2 DECODE(GROUPING(sale_item), 1, 'ALL', sale_item) AS iten,
3 SUM(sale_money) AS money
4 FROM
5 sale_report
6 GROUP BY
7 ROLLUP(sale_item);
ITEN MONEY
------ ----------
A 733285
B 2382
C 5738
ALL 741405
以上面这个 DECODE(GROUPING(sale_item), 1, 'ALL', sale_item) 为例子来说
就是 如果 GROUPING(sale_item) = 1 那么 返回 'ALL', 否则返回 sale_item
DECODE 的功能, 可以说是 取代 CASE WHEN 的功能。
下面就是 SQL Server 下, 没有 DECODE 的功能, 用 CASE WHEN 写的
1> SELECT
2> CASE
3> WHEN GROUPING(sale_item) = 1
4> THEN '总'
5> ELSE
6> sale_item
7> END AS item,
8> SUM(sale_money) [money]
9> FROM
10> sale_report
11> GROUP BY
12> sale_item WITH ROLLUP;
13> go
item money
---- ----------------------------------------
A 733285.00
B 2382.00
C 5738.00
总 741405.00
(4 行受影响)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是 SQLSERVER 中的 case when
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询