- 浏览: 919592 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (498)
- J2EE (52)
- 数据库 (17)
- java基础 (43)
- web技术 (19)
- 程序设计 (6)
- 操作系统 (18)
- IT资讯 (7)
- 我的IT生活 (12)
- 学习笔记 (9)
- Jquery (25)
- JavaScript (18)
- spring (40)
- Hibernate (12)
- Struts (10)
- YUI (2)
- Extjs (22)
- .net (0)
- Eclipse (10)
- 社会主义 (2)
- 服务器 (9)
- CSS (8)
- 网络安全 (16)
- 版本控制 (9)
- PHP (2)
- Oracle (42)
- SQL server (1)
- Mysql (11)
- 项目管理 (3)
- 开发工具使用 (10)
- SQL语句 (7)
- Perl (0)
- Shell (6)
- 漏洞 (4)
- ibatis (5)
- hacker (2)
- SQL注入 (6)
- Hacker工具 (2)
- 入侵和渗透 (7)
- 插件/组件 (2)
- 最爱开源 (5)
- 常用软件 (2)
- DOS (1)
- HTML (2)
- Android (9)
- CMS (1)
- portal (8)
- Linux (7)
- OSGI (1)
- Mina (5)
- maven (2)
- hadoop (7)
- twitter storm (2)
- sap hana (0)
- OAuth (0)
- RESTful (1)
- Nginx (4)
- flex (1)
- Dubbo (1)
- redis (1)
- springMVC (1)
- node.js (1)
- solr (2)
- Flume (1)
- MongoDB (2)
- ElasticSearch (1)
最新评论
-
M_drm:
请问要怎么设置浏览器才不报没权限呢?
用JS在页面调用本地可执行文件的方法(ACTIVEX) -
Alexniver:
官方文档。When importing data into I ...
mysql导入数据过慢 解决方法 -
camelwoo:
我记得 Criteria 可以做连接查询与子查询,也可以做分页 ...
Hibernate总结篇二 -
zhenglongfei:
楼主如果SubKeyName 这个节点不存在,怎么办??怎么用 ...
Java操作注册表 -
yxx676229549:
用log4j 2 了
logback
一、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 为负数,那么将指定的位数
在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 为负数,那么将指定的位数
发表评论
-
经典SQL语句大全
2013-05-11 16:14 777http://www.cnblogs.com/yubinfen ... -
Oracle B-tree、位图、全文索引三大索引性能比较及优缺点汇总
2012-08-23 13:19 1398原文:http://www.itpub.net/thread- ... -
使用hint优化 Oracle SQL语句方法
2012-08-10 11:40 970在SQL语句优化过程中,我们经常会用到hint,现总结一下在S ... -
收集整理的oracle常用命令大全,解决oracle常见问题
2012-05-02 23:12 1100http://taody.iteye.com/blog/150 ... -
hql写的一个取最大值的语句
2011-11-15 00:31 1126hql写的一个取最大值的语句 http://www.itey ... -
oracle查询字符串中的数字
2011-11-14 15:25 1809-- 方法一:直接用SQL语句 select col_n ... -
oracle的分析函数over 及开窗函数
2011-09-22 15:56 424oracle的分析函数over 及开窗函数 一:分析函数ove ... -
Oracle中用户profile的用法
2011-09-07 13:46 1113可以通过使用profile文件对用户的属性进行定义,比如为pr ... -
Oracle session连接数和inactive的问题记录
2011-09-07 13:42 1808从上周起,服务器Oracle ... -
Oracle用户会话信息的查询方法
2011-09-07 13:39 1460Oracle数据库中的用户会话信息应该如何查询呢?下文对Ora ... -
oracle 用户权限、profile及角色的管理
2011-09-07 13:37 818oracle 用户权限、profile及角色的管理 ... -
oracle出现invalid username/password; logon denied错误解决方案
2011-02-18 08:51 5027出现invalid username/password; lo ... -
Oracle中如何用一条SQL快速生成10万条测试数据(转)
2011-01-20 14:30 1465做数据库开发或管理的 ... -
命令操作oracle数据库总结
2010-11-30 12:55 938--查询数据库有哪些表空间,以及表空间有多少数据文件、文件 ... -
Oracle 常用sql操作整理总结
2010-11-21 01:42 1752一、选择行 1. 简单的SELECT 语句 SELE ... -
Oracle性能优化技巧
2010-10-14 13:05 9911.选用适合的ORACLE优化器 ORACLE的优化 ... -
关于数据库索引失效的问题
2010-08-27 09:22 1707一般情况,在大量数据割接完以后,会发生索引实效的情况。 ... -
ORACLE 中IN和EXISTS比较
2010-08-27 09:14 952EXISTS的执行流程 select * from ... -
Oracle的SQL语法提示30例,INDEX_JOIN,ORDERED,USE_NL,LEADING
2010-08-21 23:09 1906在SQL语句优化过程中,我们经常会用到hint,现总结一下在S ... -
oracle 11g 自动内存管理
2010-08-21 23:07 2034Oracle对内存的管理的 优化从未间断,从8i到11g不断地 ...
相关推荐
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,...
附录部分内容丰富、便予参照,包括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...
可以使用函数,如SIGN、CEIL、FLOOR、ROUND、TRUNC等。 * 字符型:可以使用连接运算符||,可以使用函数,如LENGTH、UPPER、LOWER、INITCAP等。 * 日期型:可以使用日期函数,如SYSDATE、ADD_MONTHS、MONTHS_BETWEEN...
- 主查询中使用 `DECODE` 函数来确定周一和周末的日期。当 `SUN.THE_DAY - MON.THE_DAY` 的结果为负数时,表示当前计算的是上一周的情况,需要对周末日期加7天或对周一日期减7天。 - `SUN.THE_WEEK = MON.THE_WEEK...
SELECT DECODE(sign, 1, 'Positive', -1, 'Negative', 0, 'Zero') FROM dual; ``` 通过以上内容,我们了解了 Oracle 数据库中一些重要的函数及其使用方法。这些函数的应用对于日常的数据处理和分析具有重要意义,...
第一部分 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...
以上内容详细介绍了Oracle数据库中常用的PL/SQL概念以及内置函数,这些函数可以帮助开发人员更高效地管理和操作数据库中的数据。熟练掌握这些函数对于提高查询效率和编写高质量的SQL代码至关重要。
- **单行函数**:如`SUBSTR`用于提取字符串的一部分,`TO_NUMBER`、`TO_CHAR`、`TO_DATE`进行数据类型转换,`TRUNC`截断日期或数字,`LOWER`、`UPPER`转换大小写,`DECODE`进行条件判断。 - **组函数**:如`AVG`...
- **数学函数**:`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 :...