oracle deul,Oracle PL/SQL 操作(三)Oracle函数

(1)SYSDATE

该函数返回当前的日期和时间。返回的是Oracle服务器的当前日期和时间。

select

sysdate

from

dual;

insert

into

purchase

values

(‘Small Widget’,’SH’,sysdate, 10);

insert

into

purchase

values

查看最近30天的所有销售记录,使用如下命令:

select

*

from

purchase

where

purchase_date

between

(sysdate-30)

and

(2)USER

查看用户名。

select

user

from

(3)USERENV

查看用户环境的各种资料。

select

userenv(‘TERMINAL’)

FROM

2.数值函数

(1)ROUND四舍五入函数

ROUND(数值,保留位数)

select

round(3.1415,3)

from

deul;

select

product_name,round(product_price,0) price

from

(2)TRUNC从数中截去小数部分

TRUNC(数值,截断小数点n位后的数)

select

trunc(3.145159,3)

from

dual;

select

trunc(123456.45,-1)

from

dual;

select

trunc(123456.45)

from

dual;

select

product_name,trunc(product_price) price

from

3.文本函数

(1)UPPER、LOWER和INITCAP

这三个函数更改提供给它们的文体的大小写。

select

upper

(product_name)

from

product;

select

lower

(product_name)

from

product;

select

initcap(product_name)

from

函数INITCAP能够整理杂乱的文本,如下:

select

initcap(‘this

TEXT

hAd UNpredictABLE

caSE

’)

from

(2)LENGTH

求数据库列中的数据所占的长度。

select

product_name,length(product_name) name_length

from

product

order

by

(3)SUBSTR

取子串,格式为:

SUBSTR(源字符串,起始位置,子串长度);

create

table

item_test(item_id

char

(20),item_desc

char

(25));

insert

into

item_test

values

(‘LA-101’,’Can, Small’);

insert

into

item_test

values

(‘LA-102’,’Bottle, Small’);

insert

into

item_test

values

取编号:

select

substr(item_id,4,3) item_num,item_desc

from

(4)INSTR

确定子串在字符串中的位置,格式如下:

INSTR(源字符串,要查找的字符串,查找起始位置)

select

instr(‘this

is

line one’,’line’,1)

from

其返回值为子串在源字符串中从起始位置开始第一次出现的位置。上面例子的返回值为9。

select

item_desc , instr(item_desc,’,’,1)

from

(5)LTRIM、RTRIM和TRIM

去除字符串左边的空格、去除字符串右边的空格、去除字符串左右两边的空格。

select

ltrim(‘ abc def ‘)

from

4.日期函数

(1)SYSDATE和TRUNC

这两个函数前面已经出现过,即取Oracle服务器系统的日期和截掉小数部分的功能。观察以下操作:

create

table

test_date (name

varchar

2(20), p_date

date

);

insert

into

test_date

values

(‘name1’,sysdate);

select

*

from

test_date;

select

*

from

test_date

where

p_date=’25-10月-05‘;

select

*

from

test_date

where

Oracle系统中用SYSDATE取得的不仅包含日期而且还包含的有时间信息,时间信息实际上就是表示儒略日数据中的小数部分。

(2)ADD_MONTHS

该函数返回一个具有与所提供日期相差月份的日期,函数中给出了未来或以前的月份数。语法如下:

ADD_MONTHS(起始日期,增减月数)

select

add_months(’26-10月-05‘,2)

from

dual;

select

add_months(’26-10月-05‘,-2)

from

(3)LAST_DAY

返回包含给定日期的那个月的最后一天。语法为:

LAST_DAY(日期)

select

last_day(’21-2月-80‘)

from

(4)MONTHS_BETWEEN

返回两个日期间的月份。语法为:

MONTHS_BETWEEN(较晚日期,较早日期)

select

months_between(’12-10月-05‘,’12-9月-03‘)

from

5.数据转换函数

(1)TO_CHAR

该函数将日期、时间和数值转换为文本。它的主要价值是提供对日期、时间和数的显示控制;该函数的用法非常灵活,使用较复杂,在此我们仅对经常使用的转换举例说明。

1)格式化日期和时间值

TO_CHAR(日期数据,格式编码)

select

to_char(sysdate,’YYYY-MM-DD HH24:MI:SS’)

from

dual;

select

to_char(sysdate,’HH24:MI:SS’)

from

dual;

select

to_char(sysdate,‘YYYY’)||‘年’|| to_char(sysdate,'MM')||'月'|| to_char(sysdate,'DD')||'日' 日期

from

2)格式化数值

select

to_char(5764.12345,'99,999.9999')

from

dual;

select

(2)TO_DATE

将文本转换为实际的Oracle日期/时间值。格式:

TO_DATE(文本,日期格式)

select

to_date(‘2005-10-10 11’,’YYYY-MM-DD HH24’)

from

dual;

insert

into

item_test

values

6.其它函数

NVL函数完成一个简单但有用的功能。任何时候给它一个空值,它都返回一个你所选择的值。格式如下:

NAL(输入值,如果输入值为空要返回的值)

select

nvl(

null

,’new_value’)

from

dual;

select

name,nvl(p_date,sysdate)

from

注意:函数中‘输入值’和‘如果输入值为空要返回的值’的类型必须一致。

7.常用的分组函数

(1)SUM

该函数累加值并返回总数。

select

sum

(quantity)

from

purchase;

select

sum

(sal)

from

(2)COUNT

该函数对记录进行统计。

select

count

(*)

from

这个命令有缺点,一般不应该使用。如果一个表有数十万条记录,强制进行全表扫描将会使计数结果的返回非常慢,会降低其他业务工作的处理效率。因些COUNT函数对指定进行单列统计效果会好得多。

select

count

(ename)

from

emp;

select

count

(1)

from

(3)AVG

该函数返回指定列中值的平均数。使用这个函数必须给出相应的列名,且相应列应为数值类型。

select

avg

(sal)

from

(4)MIN

该函数返回作为参数给出的某列中的最小值。

select

min

(sal)

from

(5)MAX 用法与MIN相似

select

max

(sal)

from

8.利用GROUP BY子句分组数据

完成下列操作:

create

table

tb1( name

varchar

2(10),empno number(3),sal number(4) );

insert

into

tb1

values

(‘name-a’,1,1200);

insert

into

tb1

values

(‘name-b’,1,1500);

insert

into

tb1

values

(‘name-c’,1,2100);

insert

into

tb1

values

(‘name-d’,2,900);

insert

into

tb1

values

(‘name-e’,2,1300);

select

empno,

sum

(sal)

from

tb1

group

by

empno;

select

empno,

avg

(sal),

min

(sal),

max

(sal),

count

(empno)

from

tb1

group

by

9.利用HAVING子句过滤分组的行

select

empno,

sum

(sal),

avg

(sal),

min

(sal),

max

(sal),

count

(empno)

from

test

group

by

empno

having

sum

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值