Oracle常用函数

场景:使用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
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值