Oracle常用系统函数
1、字符类函数
字符类函数:专用于字符处理函数,处理的对象可以是
字符或字符串常量,也可以是字符类型的列。
注:daul表是Oracle系统内部提供的一个用于实现临时数
据计算的特殊表,其只有一个列DUMMY,类型为VARCHAR2(1);
(1)ASCII(c)函数和CHR(i)函数
参数c:表示一个字符
参数i:表示一个数字
ASCII(c)函数:用于返回一个字符的ASCII码;
CHR(i)函数:用于返回ASCII码对应的字符;
范例:
(2)CONCAT(s1,s2)函数
参数s1,s2:表示字符串(可为空)
(3)INITCAP(s)函数
该函数将字符串s的第一个字母大写,其它字母小写。单词之间用空格、控制字符、标点符号来区分。
(4)INSTR(s1,s2[,i][,j])函数
该函数用于返回字符s2在字符串s1中第j次出现的位置,搜索从字符串s1的第i个字符开始,若没有发现要查找的字符,函数返回值为0。
(5)LENGTH(s)函数
该函数用于返回字符串s的长度,若s为null,则返回值为null.
(6)LOWER(s)函数与UPPER(s)函数
LOWER(s)函数和UPPER(s)函数分别用于返回字符串s的小写形式和大写形式。
(7) LTRIM(s1,s2)函数、RTRIM(s1,s2)函数和TRIM(s1,s2)函数;
此三个函数分别用来删除字符串s1左边的字符串s2、用来删除字符串s1右边 的字符串s2、用来删除字符串s1左右两端边的字符串s2,若这3个函数中不能指定字符串s2,则表示去除相应的空格。
范例:
(8) REPLACE(s1,s2,[s3])函数
该函数使用s3字符串替换出现在s1字符串中的所有s2字符串,并返回替换
后的新字符串。其中,s3默认为空字符串。
范例:
(9) SUBSTR(s,i,[j])函数
该函数表示从字符串s的第i个字符串开始截取长度为j的子字符串。
范例:
2、数字类函数
数字函数主要用来执行各种数据计算,所有的数字函数都有数字参数并返回数字值。
数字函数及其说明
ABS(x) 返回x的绝对值
[sql]
SELECT ABS(3), ABS(-1) FROM DUAL;
BITAND(x,y) 返回对x,y进行位与(AND)操作的结果
[sql]
SELECT BITAND(1,0), BITAND(0,1), BITAND(0,0), BITAND(1,1), BITAND(1100, 1010) FROM DUAL;
CEIL(x) 返回大于或等于x的最小整数(注意负数)
FLOOR(x) 返回小于或等于x的最大整数
[sql]
SELECT CEIL(5.6), CEIL(-5.6) FROM DUAL;
SELECT FLOOR(5.6), FLOOR(-5.6) FROM DUAL;
EXP(x) 返回e的x次幂,其中e约为2.71828183
LN(x) 返回x的自然对数
[sql]
SELECT EXP(2), EXP(1), EXP(2.3) FROM DUAL;
SELECT LN(EXP(2)), LN(2.71828183) FROM DUAL;
LOG(x,y) 返回以x为底y的对数
POWER(x,y) 返回x的y次幂
SQRT(x) 返回x的平方根
[sql]
SELECT LOG(10,100), POWER(3,3), SQRT(4) FROM DUAL;
MOD(x,y) 返回x除以y的余数
[sql]
SELECT MOD(2.31, 1.1) FROM DUAL;
SIGN(x) 返回x的符号
[sql]
SELECT SIGN(5), SIGN(-5), SIGN(0) FROM DUAL;
ROUND(x[,y]) 返回对x取整的结果。y为可选参数,说明对第几位小数处取整。没有指定y的时候,则对x的0位小数取整vkjsy是负数,则对x在小数点的左边的第|y|位取整。此函数是四舍五入取整
TRUNC(x[,y]) 与ROUND类似,之不过是直接舍去尾数
[sql]
SELECT ROUND(1234.5678), ROUND(1234.5678, 2), ROUND(1234.5678, -2) FROM DUAL;
SELECT TRUNC(1234.5678), TRUNC(1234.5678, 2), TRUNC(1234.5678, -2) FROM DUAL;
范例:
3、日期函数和时间类函数
此函数可以实现计算需要的特定日期和时间
日期函数和时间类函数表
函数 |
说 明 |
add_months(d,i) |
返回日期d加上i个月之后的结果。其中,i为任意数 |
last_day(d) |
返回包含日期d月份的最后一天 |
months_betweend(d1,d2) |
返回d1和d2之间的数目,若d1和d2的日期都相同,或者都 是该月最后一天,则返回一个整数,否则返回的结果将包含一个小数 |
new_time(d1,t1,t2) |
d1是一个日期数据类型,当时区t1中的日期和时间是d1时,返回时区t2中的日期和时间,t1和t2是字符串 |
sysdate() 或systimestamp |
返回系统当前时间 |
范例:
注: to_date()把字符串类型转换为date类型。
4、转换类函数
转换函数将指定字符从一种类型转换为另一种,通常这类函数遵循如下惯例:函数名称后面跟着待转换类型以及输出类型。
转换类函数表
函数 |
说 明 |
chartorwida(s) |
该函数将字符串s转换为RIWD数据函数 |
convert(s,aset[,best]) |
该函数将字符串s由best字符集转换为aset字符集 |
rowidtochar() |
该函数将ROWID数据类型转换为CHAR类型 |
to_char(x[,format]) |
该函数将表达式转换为字符串,format表示字符串格式 |
to_date(s[,format[lan]]) |
该函数将字符串s转换成date类型,format表示字符串格式,lan表示所使用的语言 |
to_number(s[,format[lan]]) |
该函数将返回字符串s代表的数字,返回值按照format表示字符串格式进行显示,lan表示所使用的语言 |
5、聚合类函数
注意:
补充:
SELECT[DISTINCT] * | 列名称[别名],列名称[别名],......|统计函数 ———— 5、确定查询列
FROM 数据表[别名],数据表[别名]......
———— 1、数据来源
[where 条件]
———— 2、过滤数据行
[GROUP BY 分组字段,分组字段,........]
———— 3、执行分组操作
[HAVING 分组过滤]
———— 4、针对分组后的数据过滤
[ORDER BY 字段[ASC|DESC],字段[ASC|DESC],......]
———— 6、数据排序
Where和having区别:
Where子句:是在分组前使用,而且不能使用统计函数进行验证,经过where筛选后的数据才可以分组。
Having子句:必须结合group by子句一起出现,是在分组后的过滤,可以使用统计函数。
范例:
统计查询有佣金和没有佣金人数和平均工资
注意以下区别:
6、通用函数(Oracle特色函数)
(1)处理null数据,数字NVL(列 | 数据,默认值)
在数据库中null与任何数学计算其结果都是为空,那么就可以使用NVL函数,将null按照数字0来处理。
范例:
(2)多数据判断:数据DECODE(字段 | 数据)
范例: