场景:使用Oracle常用函数
记录:NO.250
体验Oracle常用函数,版本Oracle Database 11g。查询版本:
select * from v$version;
单行函数: 只处理单个行,并且为每行返回一个结果.
聚合函数: 同时对一组数据进行操作,返回一行结果.
一、转换函数
将值从一种类型转换为另外一种类型,或者从一种格式转换为另外一种格式.
TO_DATE函数: 字符串转换为日期
select to_date('2021/06/24 23:41:33', 'yyyy/mm/dd hh24:mi:ss') from dual;
执行结果: 2021/6/24 23:41:33
TO_CHAR函数: 时间转字符串
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
执行结果: 2021-06-24 23:41:33
TO_NUMBER函数: 字符转换为数字
select to_number('18517.6667') from dual;
执行结果: 18517.6667
CAST(x as type)函数: 将x转换为指定的兼容的数据库类型
select cast(18517.6667 as varchar2(16)),
cast(18517.6667 as number(10, 2))
from dual;
执行结果: 18517.6667 18517.67
二、字符串类函数
LENGTH函数: 计算字符串长度,返回字符串的字符数。
SELECT LENGTH('FuJian') FROM DUAL;
执行结果: 6
SELECT LENGTH('福建') FROM DUAL;
执行结果: 2
LENGTHB函数: 计算字符串长度,返回字符串的字节数。
SELECT LENGTHB('FuJian') FROM DUAL;
执行结果: 6
SELECT LENGTHB('福建') FROM DUAL;
执行结果: 6
CONCAT函数: 合并字符串,返回结果为连接参数产生的字符串,参数可以是一个或多个
SELECT CONCAT('厦门','福建') FROM DUAL;
执行结果: 厦门在福建
INSTR函数: 返回指定字符串在某字符串中的位置,可以指定搜索的开始位置和返回第几次搜索出来的结果
SELECT INSTR('FuJianXiaMen','a',1,2) FROM DUAL;
执行结果: 9
LOWER函数: 将字符串中的字母转换为小写
SELECT LOWER('XIAMEN') FROM DUAL;
执行结果: xiamen
UPPER函数:将字符串中的字母转换为大写
SELECT UPPER('xiaMen') FROM DUAL;
执行结果: XIAMEN
LTRIM函数: 去除字符串左侧的空格
SELECT TRIM(' 厦门在福建 ') FROM DUAL;
执行结果: 厦门在福建
RTRIM函数: 去除字符串左侧的空格
SELECT RTRIM(' 厦门在福建 ') FROM DUAL;
执行结果: 厦门在福建
TRIM函数: 删除字符串左右两侧的空格
SELECT TRIM(' 厦门在福建 ') FROM DUAL;
执行结果: 厦门在福建
REPLACE函数: 字符串替换函数,返回替换后的新字符串
SELECT REPLACE('厦门在福建','厦门','福州') FROM DUAL;
执行结果: 福州在福建
SUBSTR函数: 截取字符串,返回从指定位置开始的指定长度的字符串
SELECT SUBSTR('XiaMen,FuZhou',1,6) FROM DUAL;
执行结果: XiaMen
REVERSE函数: 字符串反转(逆序),返回与原始字符串顺序相反的字符串
SELECT REVERSE('ABCDEF') FROM DUAL;
执行结果: FEDCBA
INITCAP函数: 将每个单词首字母大写,其他字母小写
SELECT INITCAP('ABCDEF world') FROM DUAL;
执行结果: Abcdef World
LPAD函数: 当字符串长度不够时,左填充补齐,可以指定补齐时用什么字符补齐,若不指定,则以空格补齐
SELECT LPAD('11111111',16,'00') FROM DUAL;
执行结果: 0000000011111111
RPAD函数: 当字符串长度不够时,右填充补齐,可以指定补齐时用什么字符补齐,若不指定,则以空格补齐
SELECT RPAD('11111111',16,'00') FROM DUAL;
执行结果: 1111111100000000
三、日期时间类函数
ADD_MONTHS函数: 按月增加和减少
select SYSDATE,add_months(SYSDATE, 2) from dual;
执行结果: 2021/6/24 23:46:59 2021/8/24 23:46:59
select SYSDATE,add_months(SYSDATE, -3) from dual;
执行结果: 2021/6/24 23:49:17 2021/3/24 23:49:17
SYSDATE函数: 取当前时间
select SYSDATE-1,SYSDATE,SYSDATE+1 from dual;
执行结果: 2021/6/23 23:51:07 2021/6/24 23:51:07 2021/6/25 23:51:07
四、数值计算类函数
TRUNC((value,n))函数: 对value进行截断,如果n>0,保留n位小数;n<0,则保留-n位整数位,n=0,则去掉小数部分
SELECT TRUNC(-1.567) FROM DUAL;
执行结果: -1
SELECT TRUNC(-1.567,2) FROM DUAL;
执行结果: -1.56
SELECT TRUNC(666.567,-2) FROM DUAL;
执行结果: 600
SELECT TRUNC(SYSDATE) FROM DUAL; --截取年月日
执行结果: 2021/6/24
ABS函数: 求绝对值
SELECT ABS(-1.567) FROM DUAL;
执行结果: 1.567
SQRT函数: 求二次方根
SELECT SQRT(9) FROM DUAL;
执行结果: 3
MOD函数: 求余数
SELECT MOD(9,5) FROM DUAL;
执行结果: 4
CEIL函数: 向上取整
SELECT CEIL(6.89) FROM DUAL;
执行结果: 7
FLOOR函数: 向下取整
SELECT FLOOR(6.89) FROM DUAL;
执行结果: 6
ROUND函数: 四舍五入
SELECT ROUND(6.89,1) FROM DUAL;
执行结果: 6.9
SIGN函数: 返回参数的符号
SELECT SIGN(6.89) FROM DUAL;
执行结果: 1
POWER函数: 参数次方的结果值
SELECT POWER(2,3) FROM DUAL;
执行结果: 8
SIN函数: 求正弦值
SELECT SIN(30) FROM DUAL;
执行结果: -0.9880316240928618
ASIN函数: 求反正弦值
SELECT ASIN(0.689) FROM DUAL;
执行结果: 0.7601083816679577
COS函数: 求余弦值
SELECT COS(30) FROM DUAL;
执行结果: 0.15425144988758405
ACOS函数: 求反余弦值
SELECT ACOS(0.689) FROM DUAL;
执行结果: 0.810687945126939
TAN函数: 求正切值
SELECT TAN(0.689) FROM DUAL;
执行结果: 0.8236563114169484
ATAN函数: 求反正切值
SELECT ATAN(0.689) FROM DUAL;
执行结果: 0.6033052006543151
五、聚合函数
MAX函数: 查询指定列的最大值
SELECT MAX(T.ID) FROM t_function T;
执行结果: 99999
MIN函数: 查询指定列的最小值
SELECT MIN(T.ID) FROM t_function T;
执行结果: 1
COUNT函数: 统计查询结果的行数
SELECT COUNT(1) FROM t_function T;
执行结果: 6
SUM函数: 返回指定列的总和
SELECT SUM(T.ID) FROM t_function T;
执行结果: 111106
AVG函数: 返回指定列数据的平均值
SELECT AVG(T.ID) FROM t_function T;
执行结果: 18517.6667
六、其它函数
NVL(x,value)函数: 将一个NULL转换为另外一个值,如果x为NULL,则返回value,否则返回x值本身
SELECT NVL(NULL,'5') FROM DUAL;
执行结果: 5
SELECT NVL('100','5') FROM DUAL;
执行结果: 100
NVL2(x,value1,value)函数: 如果x不为NULL,返回value1,否则,返回value2
SELECT NVL2(NULL,'5','50') FROM DUAL;
执行结果: 50
SELECT NVL2('100','5','50') FROM DUAL;
执行结果: 5
DECODE函数:
SELECT DECODE(T.ID, 1, '一', 9, '九', 99, '九十九', '大于一百') AS result
FROM t_function T;
执行结果:

NULLIF函数:
SELECT NULLIF(T.ID,100) AS result FROM t_function T;
执行结果:

CASE WHEN句法使用:
SELECT T.ID,CASE WHEN T.ID < 100 THEN '低端'
WHEN T.ID >=100 AND T.ID < 9000 THEN '中端'
WHEN T.ID >= 9000 THEN '高端'
ELSE '其它'
END AS LL
FROM t_function T;
执行结果:

七、附录
建表语句:
CREATE TABLE t_function (
ID NUMBER(18) NOT NULL ,
INSERT_TIME DATE
);
数据:
INSERT INTO t_function (ID) VALUES(1);
INSERT INTO t_function (ID) VALUES(9);
INSERT INTO t_function (ID) VALUES(99);
INSERT INTO t_function (ID) VALUES(999);
INSERT INTO t_function (ID) VALUES(9999);
INSERT INTO t_function (ID) VALUES(99999);
以上,感谢。
1万+





