Oracle:字符串函数,空值操作,日期函数
字符串操作函数:1 concat(p1,p2)--字符串连接函数
2 length(p1):求长度
3 lpad(p1,n,p2):从左边填充,即p1字符串,在n个长度中右对齐,剩下的长度用p2填充 lpad('aaa',5,*)--->**aaa
4 rpad(p1,n,p2):同上
5 lower(),upper():大小写
6 initcap():将每个单词的第一个字母大写,initcap("hello world"), Hello World
7 trim(p2 from p1):移除字符串两侧的空白字符
8 ltrim(p1,p2):移除字符串左侧的空白字符
9 rtrim(p1,p2):移除字符串右侧的空白字符
10 substr(p1,n,[length]):n为负表示从右向左截取n个字符,为正:从左向右 0-length-1
11 substr(p1,n1,length):n1:规定从何处开始截取length长度的字符
=============================================
12instr(p1,p2,[,m],n):从p1 m位置开始检索,p2出现第n次的位置
作用是返回p2子串在p1中出现的位置。
m:表示从p1的第m个字符开始往检索。
n:表示p2第n次出现。
instr(p1,p2):返回p2子串在p1中第一次出现的下标
instr(p1,p2,m):返回从p1的m位置开始,p2第一次出现的位置。
instr(p1,p2,m,n):返回从p1的m位置开始,p2第n次出现的位置。
注意:没有子串,返回0
数值函数的学习:
1 number(p,s):p总长,小数点后s位,p的取值范围在1-38;p:有效长度。
s:小数点后最多的位置。
p-s:整数位的最大值
number(p):相当于s为0。p的取值范围在1-38;
也可以不指定p,
number(*,s):p的位置,范围在1-38;
2 为了考虑数据库的移植和兼容问题。oracle提供了其他的数值类型
numeric(p,s)相当于number(p,s)
decimal(p,s)/dec(p,s)相当于number(p,s)
integer/int相当于number(38)
smallint相当于number(38)
float相当于number
double precision 相当于number
real 相当于number
几种函数:::::
函数1:四舍五入函数round(p,n):
对p进行四舍五入,保留小数点后n位。
n可以不写,相当于n为0。取整。
n可以为负数,保留到小数点前n位。
函数2: 截取函数
trunc(p,n):
对p进行截取操作,保留小数点后n位。
n可以不写,相当于n为0。只截取整数
n可以为负数,截取到小数点前n位。
函数3:取余函数
mod(m,n):
表示m对n做取余操作。
函数4:向上取整/向下取整函数
ceil(m)/floor(m)
ceil(m):表示取大于等于m的最小整数
floor(m):表示取小于等于m的最大整数。
日期操作函数:
date:日期类型,默认格式'yy-mon-rr',占七个字节大小第一个字节:表示世纪 +100
第二个字节:年
第三个字节:月
第四个字节:日
第五个字节:时
第六个字节:分
第七个字节:秒
timestamp:时间戳类型,最长占11个字节大小
前七个字节与date一致。后四个字节存储的是精确度,可以精确到纳秒
关键字:
sysdate:返回的是当前系统时间。精确到日,格式:15-3月-18
systimestamp:返回的是当前系统时间,精确到纳秒,格式:15-3月 -18 10.05.45.788000000 上午 +08:00
select systimestamp from emp
格式:
YYYY:表示年
MM:月
DD:日
HH24:24小时制的时
HH/hh12:12小时制
MI:分
SS:秒
AM:表示上下午
DAY/DY:表示星期几
D:表示一周的第几天
DDD:表示一年的第几天
函数1:
to_char(p1,fmt) 通常都是在查询语句中使用
作用将p1按照格式fmt进行显示。
p1:日期类型
fmt:字符串,格式
函数2:
to_date(p1,fmt),通常都是在插入中使用
作用将p1按照格式fmt变成日期类型
p1:字符串类型
fmt:字符串,格式
函数3:
last_day(p1):
查看p1日期所在月的最后一天的日期
函数4:
add_months(p1,n):
表示查看p1日期的n个月后的日期。
n:表示增加的月数。
n:可以为小数,但是会截取成整数进行增加。
n:可以为负数,表示p1的前几个月。
函数:
months_between(p1,p2)
计算p1日期和p2日期之间相差的月数。
可能为小数。
计算规则:p1-p2,
可能为负数。
日期函数--续
1:next_day(date,num)表示查看参数date的下一个周几的日期
date:某一日期
num:范围为1-7,表示周日到周六
2:least(p1,p2,p3,...)
多个参数比较,显示最小的数据
greatest(p1,p2,p3,………………)
多个参数比较,显示最大的数据
要求:参数为同一类型
或者可以默认转换成第一个参数的类型。
参数类型基于第一个参数类型,以第一个参数的类型为基准
字符串类型比较大小:比较的字符的ascii码的大小。
3:extract( p1 from p2):
表示从日期p2中提取分量p1
日期的分量:
year
month
day
hour
minute
second
日期类型关键字sysdate和systimestamp,表示当前系统时间
可以从sysdate中提取年月日
可以从systimestamp中提取年月日时分秒
空值操作:
null:表示空的意思。1:表中的任何字段,默认情况下都可以为null值。
2:not null表示 非空,是一种约束,
设置为非空约束的字段,必须有有效值,不能为空
3:插入数据时,
reg:
insert into emp (empno,ename) values(2001,'张三');
此记录中,没有赋值的字段都是null值。
reg:
insert into emp (empno,ename) values(2002,null);
此记录中,字段ename为null值。
4:修改数据时,
(1)当空值为条件时
update emp set ename='张三' where comm is null;
(2)当被设置为null时,
update emp set ename = null;
5:当空值参与计算时。
null:相当于无穷大
1+null为null
null也不等于null
reg:计算员工的月收入
select sal+comm from emp; 明显结果有问题。
空值操作函数:
(1)nvl(p1,p2)
表示:如果p1这个字段的值为null,就使用p2
否则使用本身p1
(2)nvl2(p1,p2,p3)
表示:如果p1是null,就使用p2,
如果是null,使用p3
基础查询语句:DQL query(查询的意思)
select colName1,………… from tname;1:select子句:查询语句中必不可少的一部分
select 后可以指定要显示的字段名
可以使用通配符* 来代替表中的所有字段名。
字段名 后 可以起 列别名
as可以忽略。
2:from子句:查询语句中必不可少的一部分
from 用来指定要操作的表对象
表名也可以起别名,直接在表名后 添加别名。
不能使用as
3:where子句:
用来使用限制条件进行查询的。
查询出符合限制条件的记录。
符号:
=,>,<,>=,<=,!=
注意: 多个条件时使用and或者or进行连接。
当条件在某一个区间内或不在某一区间内时,
可以使用
[not] between p1 and p2
当条件为某些固定值时,可以使用集合。
in/not in
用法:
字段名 in (值1,值2,…………);
表示符合集合中的任意一个即可。
相当于or
字段名 not in (值1,值2,…………);
表示不符合集合的任何一个。
相当于and