Oracle PL\SQL 操作(三)Oracle函数
2009-07-08 17:33
447 查看
1.系统变量函数(1)SYSDATE该函数返回当前的日期和时间。返回的是Oracle服务器的当前日期和时间。
查看最近30天的所有销售记录,使用如下命令:selectsysdate fromdual; insert intopurchase values (‘SmallWidget’,’SH’,sysdate,10); insert intopurchase values (‘MeduemWodget’,’SH’,sysdate-15,15);
(2)USER查看用户名。select* frompurchase wherepurchase_date between(sysdate-30) andsysdate;
(3)USERENV查看用户环境的各种资料。select user fromdual;
2.数值函数(1)ROUND四舍五入函数ROUND(数值,保留位数)selectuserenv(‘TERMINAL’) FROMdual;
(2)TRUNC从数中截去小数部分TRUNC(数值,截断小数点n位后的数)selectround(3.1415,3) fromdeul; selectproduct_name,round(product_price,0)price fromproduct;
3.文本函数(1)UPPER、LOWER和INITCAP这三个函数更改提供给它们的文体的大小写。selecttrunc(3.145159,3) fromdual; selecttrunc(123456.45,-1) fromdual; selecttrunc(123456.45) fromdual; selectproduct_name,trunc(product_price)price fromproduct;
函数INITCAP能够整理杂乱的文本,如下:select upper(product_name) fromproduct; select lower(product_name) fromproduct; selectinitcap(product_name) fromproduct;
(2)LENGTH求数据库列中的数据所占的长度。selectinitcap(‘this TEXThAdUNpredictABLE caSE’) fromdual;
(3)SUBSTR取子串,格式为:SUBSTR(源字符串,起始位置,子串长度);selectproduct_name,length(product_name)name_length fromproduct order byproduct_name;
取编号:create tableitem_test(item_id char(20),item_desc char(25)); insert intoitem_test values(‘LA-101’,’Can,Small’); insert intoitem_test values(‘LA-102’,’Bottle,Small’); insert intoitem_test values(‘LA-103’,’Bottle,Large’);
(4)INSTR确定子串在字符串中的位置,格式如下:INSTR(源字符串,要查找的字符串,查找起始位置)selectsubstr(item_id,4,3)item_num,item_desc fromitem_test;
其返回值为子串在源字符串中从起始位置开始第一次出现的位置。上面例子的返回值为9。selectinstr(‘this islineone’,’line’,1) fromdual;
(5)LTRIM、RTRIM和TRIM去除字符串左边的空格、去除字符串右边的空格、去除字符串左右两边的空格。selectitem_desc,instr(item_desc,’,’,1) fromitem_test;
4.日期函数(1)SYSDATE和TRUNC这两个函数前面已经出现过,即取Oracle服务器系统的日期和截掉小数部分的功能。观察以下操作:selectltrim(‘abcdef‘) fromdual;
Oracle系统中用SYSDATE取得的不仅包含日期而且还包含的有时间信息,时间信息实际上就是表示儒略日数据中的小数部分。(2)ADD_MONTHS该函数返回一个具有与所提供日期相差月份的日期,函数中给出了未来或以前的月份数。语法如下:create tabletest_date(name varchar2(20),p_date date); insert intotest_date values(‘name1’,sysdate); select* fromtest_date; select* fromtest_date wherep_date=’25-10月-05‘; select* fromtest_date wheretrunc(p_date)=’25-10月-05‘;
ADD_MONTHS(起始日期,增减月数)(3)LAST_DAY返回包含给定日期的那个月的最后一天。语法为:LAST_DAY(日期)selectadd_months(’26-10月-05‘,2) fromdual; selectadd_months(’26-10月-05‘,-2) fromdual;
(4)MONTHS_BETWEEN返回两个日期间的月份。语法为:MONTHS_BETWEEN(较晚日期,较早日期)selectlast_day(’21-2月-80‘) fromdual;
5.数据转换函数(1)TO_CHAR该函数将日期、时间和数值转换为文本。它的主要价值是提供对日期、时间和数的显示控制;该函数的用法非常灵活,使用较复杂,在此我们仅对经常使用的转换举例说明。1)格式化日期和时间值TO_CHAR(日期数据,格式编码)selectmonths_between(’12-10月-05‘,’12-9月-03‘) fromdual;
2)格式化数值selectto_char(sysdate,’YYYY-MM-DDHH24:MI:SS’) fromdual; selectto_char(sysdate,’HH24:MI:SS’) fromdual; selectto_char(sysdate,‘YYYY’)||‘年’||to_char(sysdate,'MM')||'月'||to_char(sysdate,'DD')||'日'日期 fromdual
(2)TO_DATE将文本转换为实际的Oracle日期/时间值。格式:TO_DATE(文本,日期格式)selectto_char(5764.12345,'99,999.9999') fromdual; selectto_char(5764.12345,‘09,999.9999')fromdual;
6.其它函数NVL函数完成一个简单但有用的功能。任何时候给它一个空值,它都返回一个你所选择的值。格式如下:NAL(输入值,如果输入值为空要返回的值)selectto_date(‘2005-10-1011’,’YYYY-MM-DDHH24’) fromdual; insert intoitem_test values(‘name-x’,to_date(‘2005-10-25’,’YYYY-MM-DD’));
注意:函数中‘输入值’和‘如果输入值为空要返回的值’的类型必须一致。7.常用的分组函数(1)SUM该函数累加值并返回总数。selectnvl( null,’new_value’) fromdual; selectname,nvl(p_date,sysdate) fromtest_date;
(2)COUNT该函数对记录进行统计。select sum(quantity) frompurchase; select sum(sal) fromemp;
这个命令有缺点,一般不应该使用。如果一个表有数十万条记录,强制进行全表扫描将会使计数结果的返回非常慢,会降低其他业务工作的处理效率。因些COUNT函数对指定进行单列统计效果会好得多。select count(*) fromemp;
(3)AVG该函数返回指定列中值的平均数。使用这个函数必须给出相应的列名,且相应列应为数值类型。select count(ename) fromemp; select count(1) fromemp;
(4)MIN该函数返回作为参数给出的某列中的最小值。select avg(sal) fromemp;
(5)MAX用法与MIN相似select min(sal) fromemp;
8.利用GROUPBY子句分组数据完成下列操作:select max(sal) fromemp;
9.利用HAVING子句过滤分组的行create tabletb1(name varchar2(10),empnonumber(3),salnumber(4)); insert intotb1 values(‘name-a’,1,1200); insert intotb1 values(‘name-b’,1,1500); insert intotb1 values(‘name-c’,1,2100); insert intotb1 values(‘name-d’,2,900); insert intotb1 values(‘name-e’,2,1300); selectempno, sum(sal) fromtb1 group byempno; selectempno, avg(sal), min(sal), max(sal), count(empno) fromtb1 group byempno;
selectempno, sum(sal), avg(sal), min(sal), max(sal), count(empno) fromtest group byempno having sum(sal)>2500
相关文章推荐
- Oracle PL\SQL 操作(三)Oracle函数
- Oracle PL/SQL 操作(三)Oracle函数
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- Oracle笔记 十一、PL/SQL函数和触发器
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- oracle监听多台主机配置,用pl/sql连接操作多个数据库详解
- Oracle PL/SQL之函数索引(Function-based indexes)使用示例
- SQL方法函数1——操作数字(oracle版)
- Oracle中使用PL/SQL操作COM对象
- oracle中pl/sql编程---存储过程,函数,触发器,包
- oracle(pl/sql)包、存储过程的增、删、查、改等操作的实现(源代码)
- ORACLE PL/SQL 函数
- Oracle PL\SQL操作(二)
- Oracle PL\SQL操作(六)用户和角色
- Oracle PL/SQL中编写空操作的存储过程
- Oracle中使用PL/SQL操作COM对象
- 【Oracle 】PL/SQL重用函数调用过程中PLS-307的错误
- oracle(PL/SQL)表操作:创建表时检查数据库是否存在该表,若存在删除再创建
- oracle pl/sql函数大全 一 字符型函数