- 浏览: 194751 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
find13:
学习
iReport中文教程 -
coderfly:
thanks !
iReport中文教程 -
月亮不懂夜的黑:
下载 学习。thanks!
iReport中文教程 -
yanqingluo:
谢谢,先转走.再验证.
eclipse maven debug -
周佳1986:
谢谢,分享。
iReport中文教程
本文转自 http://knowyouknowme.iteye.com/blog/574974
一、decode
在Oracle/PLSQL中, decode 具有和 IF-THEN-ELSE 一样的功能。
decode 函数语法如下:
decode( expression , search , result [, search , result]... [, default] )
expression 要比较的表达式.
search 要与expression 比较的字段。.
result 如果expression 与search 一样的话,返回该结果。.
default 此参数可选,如果没有与expression 匹配上的search . 就返回此结果,如果此参数没有设置,当没有与expression匹配上的search时,返回null。
search 和 result可成对出现多次,代表各种要匹配的情况。
应用于
- Oracle 9i, Oracle 10g, Oracle 11g
例如:
You could use the decode function in an SQL statement as follows:
select supplier_name,decode(supplier_id,1000,'IBM',10001,'Microsoft','1002','Hewlett Packard','Gateway') result from suppliers;
上面的sql语句相当于下面的IF-THEN-ELSE :
IF supplier_id = 10000 THEN
result := 'IBM';ELSIF supplier_id = 10001 THEN
result := 'Microsoft';ELSIF supplier_id = 10002 THEN
result := 'Hewlett Packard';ELSE
result := 'Gateway';END IF;
decode 函数会挨个匹配supplier_id 的值.
常见问题:
问题1: 现在一个阅读者想问,怎么使用decode函数来比较两个日期呢?(例如:date1 和 date2), 如果date1 > date2, decode 函数返回date2. 否则decode函数返回 date1.
回答: 要实现上述要求,可使用decode函数如下:
decode((date1 - date2) - abs(date1 - date2), 0, date2, date1)
如果date1大于date2,下面表达是会等于0:
(date1 - date2) - abs(date1 - date2)
帮助性提示: 可用decode函数绑定SIGN 函数 像下面这样:
上面比较日期的语句可修改如下:
DECODE(SIGN(date1-date2), 1, date2, date1)
SIGN/DECODE 联合对于有关销售红利等数字方面的比较是非常有用的。
DECODE(SIGN(actual-target), -1, 'NO Bonus for you', 0,'Just made it', 1, 'Congrats, you are a winner')
问题2: 我想知道是否可以用decode函数来确定数字范围,例如 1-10 = 'category 1', 11-20 = 'category 2', 比一个一个比较应该会好一点吧.
回答: 不幸的告诉你,不可以用decode函数来确定数字的范围. 可是你可以试着创建一个表达式,这个表达式可以得一个数字指定的范围, 下一个数字对应下一个指定的范围, 以此类推.
例如:
select supplier_id,decode(trunc((supplier_id-1)/10),0,'category 1',1,'category 2',2,'category 3','unknown') result from suppliers;
这个例子基于这个公式:trunc ((supplier_id - 1) / 10
如果supplier_id在1和10之间,表达式计算值=0.
如果supplier_id在11和20之间,表达式计算值=1.
如果supplier_id在21和30之间,表达式计算值=3.
等等;
问题3: 我想写一个decode函数,要求如下:
如果 yrs_of_service < 1 返回 0.04
如果 yrs_of_service >= 1 and < 5 返回0.04
如果 yrs_of_service > 5 返回 0.06
这种情况我该怎么做呢?
回答: You will need to create a formula that will evaluate to a single number for each one of your ranges.
For example:
select emp_name,decode(trunc((yrs_of_service+3)/4),0,0.04,1,0.04,0.06) as perc_value from employees;
问题4: decode函数的参数个数有限制吗?我得到一个错误 "ORA-00939: too many arguments for function".
回答: 是的,decode函数的最大参数个数为255个,包括expression, search, and result arguments.<!-- InstanceEndEditable -->
-------------------------------------------------------------------------------------------------------------
二、sign
在Oracle/PLSQL中, sign 函数返回一个数字的正负标志.
语法如下:sign( number )
number 要测试标志的数字.
If number < 0, then sign returns -1.
If number = 0, then sign returns 0.
If number > 0, then sign returns 1.
应用于:
-
Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g
例如:
sign(-23) would return -1 sign(0.001) would return -1 sign(0) would return 0 sign(0.001) would return 1 sign(23) would return 1 sig(23.601) would return 1
----------------------------------------------------------------------------------------------------
三、trunc(number)
在Oracle/PLSQL中, trunc function returns a number truncated to a certain number of decimal places.
trunc function 语法如下:
trunc( number, [ decimal_places ] )
number 要截取的数字.
decimal_places 要保留的小数位. 这个参数必须是个整数. 如果此参数缺省,默认保留0位小数
应用于:
- Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g
例如For example:
trunc(125.815) would return 125 trunc(125.815, 0) would return 125 trunc(125.815, 1) would return 125.8 trunc(125.815, 2) would return 125.81 trunc(125.81, 3) would return 125.81 trunc(-125.815, 2) would return -125.81 trunc(125.815, -1) would return 120 trunc(125.815, -2) would return 100 trunc(125.81, -3) would return 0
如果decimal_places 大于number 本身的小数位数,返回原数字不会加0.
如:trunc(125.81,3) would return 125.81;
如果decimal_places 为负数,那么将指定的位数
发表评论
-
spring事务管理的几种方式
2014-06-19 20:38 6690原文:http://sishuok.com/forum/bl ... -
【转】<maven权威指南>学习笔记
2013-06-06 12:32 1148一些常用的命令 mvn help:effective-pom ... -
ubuntu 下安装oracle客户端oracle-xe-client
2012-12-13 16:19 1690本文转自 http://os.chinaunix.net/a2 ... -
JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat
2012-12-11 23:46 5710本文转自:http://blog.csdn.net/ke ... -
iReport中文教程
2012-11-22 19:11 1914iReport中文教程 -
svn cat 查看历史版本信息
2012-11-13 12:01 9103转自:http://lee2013.iteye.com/ ... -
【转】自动ssh登录的几种方法
2012-11-01 19:50 1094本文转自 http://blueicer.blog.51cto ... -
【转】ubuntu自动登录ssh
2012-11-01 19:47 1094本文转自 http://huqilong.b ... -
Oracle Instant Client
2012-10-30 15:38 1249转自:https://help.ubuntu.com/comm ... -
ORACLE 时间函数(SYSDATE)
2012-10-22 20:40 1863本文转自:http://www.cnblogs.com/jin ... -
Linux下如何保持gnome-terminal窗口执行命令后停留而不立刻关闭(gnome-terminal -x)
2012-10-17 11:46 12066Linux下如何保持gnome-terminal窗口执行命令 ... -
常见Oracle HINT的用法
2012-10-10 17:17 929常见Oracle HINT的用法 1. /*+ALL ... -
快速理解VirtualBox的四种网络连接方式
2012-10-06 11:54 987本文转自:http://www.cnblogs. ... -
HTML页面跳转的5种方法【转】
2012-07-02 14:49 1950转自:http://blog.sina.com.cn/s/bl ... -
【转】健康成长系列之宝宝不能乱吃的那些食物 大家警惕
2012-06-05 18:40 1100转自:http://www.19lou.com/foru ... -
【转】nologging与insert
2012-05-15 17:39 1824转载自:http://hi.baidu. ... -
电脑保护色
2012-05-01 15:56 916色调(E):85 饱和度(S):95 亮度(L):2 ... -
Ubuntu apt.conf 代理
2012-04-24 16:19 1767Acquire::http::Proxy "h ... -
Oracle for loop
2012-03-12 17:35 925DECLARE i number; j n ... -
RACLE查询每个表占用空间大小
2012-03-08 17:48 11161、查看每个owner所占空间大小 select dist ...
相关推荐
22. TRUNC函数:将数字截断至指定的小数位数。 日期函数 1. ADD_MONTHS函数:在日期上增加指定的月份数。 2. LAST_DAY函数:返回给定月份中的最后一天。 3. MONTHS_BETWEEN函数:计算两个日期之间的月份差异。 4. ...
2. **TRUNC函数**:截断数值到指定的小数位数,没有指定则截断到整数。 3. **POWER函数**:计算数值的幂次。 4. **ABS函数**:返回数值的绝对值。 5. **MOD函数**:返回两个数相除的余数。 6. **SIGN函数**:根据...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的内置函数,以支持复杂的查询和数据处理。在Oracle中,函数是执行特定任务的预定义SQL或PL/SQL代码块,它们可以帮助我们处理和转换数据。让我们深入...
本文将详细介绍Oracle中一些最常用的函数及其使用方法,这些函数包括`DECODE`、`ABS`、`CEIL`、`MOD`、`ROUND`、`TRUNC`、`CONCAT`、`LOWER`和`LPAD`。 #### 二、DECODE函数:条件判断与转换 **功能描述**:`...
在Oracle数据库中,函数是一类预定义的子程序,它可以对输入参数执行运算,并返回一个结果值。Oracle提供了一系列的函数,用于处理不同类型的数据,如字符串、数字、日期和时间等。下面按照文档所提供的内容,详细...
### ORACLE函数及其用法详解 #### 概述 Oracle是一种广泛使用的数据库管理系统,它提供了丰富的内置函数,这些函数能够帮助开发者和数据库管理员更高效地处理数据。本文将详细介绍Oracle中的一些常用函数及其应用...
根据提供的标题和描述,本文将详细介绍在MySQL、SQL Server以及Oracle数据库中常用的函数。这些函数主要分为几大类:字符串处理函数、数值处理函数、日期处理函数、转换函数以及其他一些特殊用途的函数。 ### 字符...
ORACLE函数大全 ________________________________________ 作者:[本站编辑] 来源:[CSDN] 浏览:[ ] SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,...
可以使用函数,如SIGN、CEIL、FLOOR、ROUND、TRUNC等。 * 字符型:可以使用连接运算符||,可以使用函数,如LENGTH、UPPER、LOWER、INITCAP等。 * 日期型:可以使用日期函数,如SYSDATE、ADD_MONTHS、MONTHS_BETWEEN...
附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 第1部分 关键的数据库概念 第1章 OracleDatabase11g体系结构 1.1 数据库和实例 1.2 数据库技术 1.2.1 存储数据 1.2.2 数据保护 1.2.3...
附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 第1部分 关键的数据库概念 第1章 OracleDatabase11g体系结构 1.1 数据库和实例 1.2 数据库技术 1.2.1 存储数据 1.2.2 数据保护 1.2.3...
SELECT DECODE(sign, 1, 'Positive', -1, 'Negative', 0, 'Zero') FROM dual; ``` 通过以上内容,我们了解了 Oracle 数据库中一些重要的函数及其使用方法。这些函数的应用对于日常的数据处理和分析具有重要意义,...
以上内容详细介绍了Oracle数据库中常用的PL/SQL概念以及内置函数,这些函数可以帮助开发人员更高效地管理和操作数据库中的数据。熟练掌握这些函数对于提高查询效率和编写高质量的SQL代码至关重要。
- **单行函数**:如`SUBSTR`用于提取字符串的一部分,`TO_NUMBER`、`TO_CHAR`、`TO_DATE`进行数据类型转换,`TRUNC`截断日期或数字,`LOWER`、`UPPER`转换大小写,`DECODE`进行条件判断。 - **组函数**:如`AVG`...
第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...
- 主查询中使用 `DECODE` 函数来确定周一和周末的日期。当 `SUN.THE_DAY - MON.THE_DAY` 的结果为负数时,表示当前计算的是上一周的情况,需要对周末日期加7天或对周一日期减7天。 - `SUN.THE_WEEK = MON.THE_WEEK...
- **数学函数**:`ROUND()`、`TRUNC()`、`FLOOR()`、`CEIL()`、`MOD()`、`SIGN()`、`POWER()` - **日期函数**:`ADD_MONTHS()`、`MONTHS_BETWEEN()`、`LAST_DAY()`、`NEXT_DAY()` - **聚合函数**:`MAX()`、`MIN()`...
- `DECODE`:条件判断函数,类似`CASE`语句。 #### 四、SELECT语句应用 - **分组查询** - `GROUP BY`子句:根据一个或多个列对结果集进行分组。 - `HAVING`子句:过滤`GROUP BY`后的分组。 - **多表查询**:...
sum(decode(sign(trunc(d.create_time,'year')-trunc(sysdate,'year')),0, d.credit_unposted+d.credit_posted, 0)) CREDIT_AMOUNT from ACCOUNT_DAILY_VEIW d group by d.ACCOUNT_ID ) loop v_account_month :...