函数介绍
- Oracle SQL 提供了用于执行特定操作的专用函数,这些函数大大增强了 SQL 语言的功能,用法和大多数编程语言一样,接收数据项参数处理返回结果,函数可以接受零个或者多个输入参数,并返回一个输出结果。
- 在Oracle中函数主要分为两类(本文主要介绍常用单行函数中的其中四个)
- 单行函数:对每一个函数应用在表的记录中时,只能输入一行结果,返回一个结果.
- 聚合函数:聚合函数同时可以对多行数据进行操作,并返回一个结果。比如 SUM(x)
返回结果集中 x 列的总合.
常用的单行函数
-
字符函数:对字符串操作。
-
数字函数:对数字进行计算,返回一个数字。
-
转换函数:可以将一种数据类型转换为另外一种数据类型。
-
日期函数:对日期和时间进行处理。
-
空值相关函数:与NULL相关的函数
-
解码编码相关函数
-
函数嵌套 :一个含糊的返回值作为另一个函数的参数
常用字符函数
函数 | 说明 | 演示 | 结果 |
---|---|---|---|
ASCII(parameter) | 返回字符parameter的ASCII码 | SELECT ASCII(‘X’) FROM DUAL; | 88 |
CONCAT(parameter1,parameter2) | 连接字符串parameter1和parameter2 | SELECT CONCAT(‘HELLO’,‘WORLD’) FROM DUAL; | HELLOWORLD |
LENGTH(parameter) | 返回parameter的长度 | SELECT LENGTH(‘Oracle学习笔记’) FROM DUAL; | 10 |
LOWER(parameter) | parameter转换成小写 | SELECT LOWER(‘JavaSE’) FROM DUAL; | javase |
UPPER(parameter) | parameter转换成大写 | SELECT UPPER(‘JavaSE’) FROM DUAL; | JAVASE |
LTRIM(parameter[,X]) | 把parameter的左边截去X字符串,缺省截去空格 | SELECT LTRIM(’###Hello–World###’,’###’) FROM DUAL; | JAVASE |
RTRIM(parameter[,X]) | 把parameter的右边截去X字符串,缺省截去空格: | SELECT RTRIM(’###Hello–World###’,’###’) FROM DUAL; | JAVASE |
TRIM([X FROM]parameter) | 把parameter的两边截去X字符串,缺省截去空格 | SELECT TRIM(’#‘FROM’#Hello–World#’) FROM DUAL; | Hello–World |
REPLACE(parameter,old,new) | 在parameter中查找old,并替换成new | SELECT REPLACE(‘Hello–World’,‘World’,‘nihao’) FROM DUAL; | Hello–nihao |
SUBSTR(parameter,start[,length]) | 返回parameter的子串,从start处开始,截取length个字符,缺省length,默认到结尾 | SELECT SUBSTR(‘Hello–World’,8,5) FROM DUAL; | World |
常用数值函数
函数 | 说明 | 演示 | 结果 |
---|---|---|---|
ABS(X) | X的绝对值 | SELECT ABS(-9) FROM DUAL; | 9 |
ACOS(X) | X的反余弦 | SELECT ACOS(1) FROM DUAL; | 0 |
COS(X) | 余弦 | SELECT COS(1) FROM DUAL; | 0.5403023058 |
CEIL(X) | 大于或等于X的最小值 | SELECT CEIL(9.9) FROM DUAL | 10 |
FLOOR(X) | 小于或等于X的最大值 | SELECT FLOOR(9.9) FROM DUAL; | 9 |
LOG(X,Y) | X为底Y的对数 | SELECT LOG(100,10) FROM DUAL; | 0.5 |
MOD(X,Y) | X除以Y的余数 | SELECT MOD(10,3) FROM DUAL; | 1 |
POWER(X,Y) | X的Y次幂 | SELECT POWER(2,5) FROM DUAL; | 32 |
ROUND(X[,Y]) | X在第Y位四舍五入 | SELECT ROUND(3.14155926,2) FROM DUAL; | 3.14 |
SQRT(X) | X的平方根 | SELECT SQRT(9) FROM DUAL; | 3 |
TRUNC(X[,Y]) | X在第Y位截断 | SELECT TRUNC(3.1415926,3) FROM DUAL; | 3.141 |
常用转换函数
--自动类型转换
SELECT 1+'99' FROM DUAL;
--将字符串转化为时间日期格式
SELECT add_months('15-3月-2020',2) FROM DUAL;
--TO_NUMBER TO_CHAR TO_DATE
SELECT SYSDATE FROM DUAL;
--把日期函数转换成字符串:TO_CHAR()
SELECT SYSDATE,TO_CHAR(SYSDATE) FROM DUAL;
--将数字转化为字符串
SELECT 1433223,TO_CHAR(1433223) FROM DUAL;
-- 将字符串转换成日期类型,必须要指定格式TO_DATE
SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('2019-03-15','YYYY-MM-DD')) FROM DUAL;
--将字符串转化为数字:字符串中必须只有数字
SELECT '123' ,TO_NUMBER('3.1415926') FROM DULA;
日期函数
-
ADD_MONTHS(d,n),在某一个日期 d 上,加上指定的月数 n,返回计算后的新日期,d 表示日期,n 表示要加的月数
-
LAST_DAY(d),返回指定日期当月的最后一天
-
ROUND(d[,format]),返回一个以 format 为格式的四舍五入日期值, d 是日期, format 是格式
① 如果 format 为“YEAR”则舍入到某年的 1 月 1 日,即前半年舍去,后半年作为下一年
② 如果 format 为“MONTH”则舍入到某月的 1 日,即前月舍去,后半月作为下一月
③ 如果 format 为“DAY”则舍入到最近的周的周日,即上半周舍去,下半周作为下一周周日
多种日期格式
- YYYY:四位表示的年份
- YYY,YY,Y:年份的最后三位、两位或一位,缺省为当前世纪
- IYYY:ISO标准的四位年份
- MM:01~12的月份编号
- MONTH:全拼字符集表示的月份,右边用空格填补
- D:当周第几天
- DD:当月第几天
- DDD:当年第几天
- HH,HH12:一天中的第几个小时,12进制表示法
- HH24:一天中的第几个小时,取值为00~23
- MI:一小时中的分钟
- SS:一分钟中的秒
常用日期查询
SELECT TRUNC(SYSDATE,'YEAR') FROM DUAL;
SELECT TRUNC(SYSDATE,'MONTH') FROM DUAL;
SELECT TRUNC(SYSDATE,'DAY') FROM DUAL;
--查询当天日期
SELECT TRUNC(SYSDATE) FROM DUAL;
--查询当月的第一天
SELECT TRUNC(SYSDATE, 'MM') FROM DUAL;
--查询当年第一天
SELECT TRUNC(SYSDATE,'YY') FROM DUAL;
--返回当前时间
SELECT TRUNC(SYSDATE, 'HH') FROM DUAL;
边学习边记录,若有不足之处欢迎留言指点…