oracle-函数
2021/4/24 19:28:26
本文主要是介绍oracle-函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 函数概述
1.函数的作用: 方便数据的统计 处理查询结果 2.函数分类: 数值函数 字符函数 日期函数 转换函数 3.在查询中使用函数: 将小写字母转换成大写 查询时间间隔 四舍五入
2. 数值函数
1.四舍五入 ROUND(n[,m]) -- n表示要进行四舍五入的值 -- m表示保留小数点后几位或前几位 -- 省略m:0 -- m>0:小数点后m位 -- m<0:小数点前m位 eq: select round(23.4),round(23.45,1),round(23.45,-1) from dual; --23 23.5 20 2.取整函数 CEIL(n)-- 取最大值 FLOOR(N)-- 取最小值 eq: select ceil(23.45) from dual; -- 24 select floor(23.45) from dual; --23 3.常用计算 ABS(n) --取绝对值 eq: select abs(23.45),abs(-23),abs(0) from dual; -- 23.45 23 0 MOD(m,n) --取余数 -- 如果m和n中有 一个值为null值,则结果返回null值 eq: select mod(5,2) from dual; -- 1 select mod(5,null) from dual; -- null select mod(null,5) from dual; -- null POWER(m,n) -- 表示返回m的n次幂 2*2*2用 power(2,3)表示 eq: select power(2,3),power(null,2) from dual; -- 8 null SQRT(n) -- 求平方根 16的平方根表示为 sqrt(16),结果为4 eq: select sqrt(16) from dual; --4 4.三角函数 SIN(n) -- 正弦 ASIN(n) -- 反正弦 COS(n) -- 余弦 ACOS(n) --反余弦 TAN(n) --正切 ATAN(n) --反正切 n均为弧度 eq: select sin(3.124) from dual; -- .017591746
3. 字符函数
大小写转换函数 UPPER(char) -- 小写-> 大写 LOWER(char) -- 大写-> 小写 INITCAP(char) -- 首字母大写 eq: select upper('abde'),lower('ADe'),initcap('asd') from dual; -- ABDE ade Asd 获取子字符串函数 SUBSTR(char,[m[,n]]) -- char : 源字符串 m: 取子串的开始位置 n: 截取子串的位数 -- n可以省略 当n省略时表示从m的位置截取到字符串末尾 -- m为0,表示从字符串的首字母开始截取 -- m为负数,表示从字符串的尾部开始截取 eq: select substr('abcde',2,3),substr('abcde',2),substr('abcde',-2,1) from dual; -- bcd bcde d 获取字符串长度函数 LENGTH(char) eq: select length('acde ') from dual; -- 5 字符串连接函数 CONCAT(char1,char2) 与 || 操作符的作用一样 eq: select concat('ab','cd') from dual; -- abcd 去除子串函数 TRIM(c2 FROM c1) eq: select trim('a' from 'aabcde') from dual; -- bcde LTRIM(c1[,c2]) eq: select ltrim('aabaaxaa' , 'a') from dual; -- baaxaa RTRIM(c1[,c2]) eq: select rtrim('aabaaxaa' , 'a') from dual; -- aabaax TRIM(c1) -- 去除左右的空格 LTRIM(c1) -- 去除左边的空格 RTRIM(C2) -- 去除右边的空格 替换函数 REPLACE(char,s_string[,r_string]) -- 省略r_string用空格替换 eq: select replace('abcde','a','A') from dual; -- Abcde select replace('abcde','a') from dual; -- bcde
4. 日期函数
系统时间 SYSDATE 默认格式:DD-MON-RR (日-月-年) eq: select sysdate from dual; -- 23-4月 -21 日期操作 ADD_MONTHS(date,i) -- 返回在指定日期上添加的月份 -- i可以是任何整数 -- 如果i是小数,则截取整数部分 -- 如果i是负数,则相当于为原日期减去月份 eq: select add_months(sysdate,3),add_months(sysdate,-3) from dual; -- 23-7月 -21 23-1月 -21 NEXT_DAY(date,char) -- 如果char的值是‘星期一’,则返回date指定日期的下周一是哪天 eq: select next_day(sysdate,'星期一') from dual; -- 26-4月 -21 LAST_DAY(date) eq: select last_day(sysdate) from dual; -- 30-4月 -21 MONTHS_BETWEEN(date1,date2) -- 两个日期之间相隔的月份 eq: select months_between('20-5月-15','10-1月-15') from dual; -- 4.32258065 EXTRACT(date FROM datetime) eq: select extract(year from sysdate) from dual; -- 年 2021 select extract(month from sysdate) from dual; -- 月 4 select extract(day from sysdate) from dual; -- 日 23 select extract(hour from timestamp '2015-10-1 17:25:13') from dual;-- 小时 17 select extract(minute from timestamp '2015-10-1 17:25:13') from dual;-- 分钟 25 select extract(second from timestamp '2015-10-1 17:25:13') from dual;-- 秒 13
5. 转换函数
日期转换成字符的函数 TO_CHAR(date[,fmt[,params]]) -- date :将要转换的日期 -- fmt: 转换的格式 -- params: 日期的语言 -- 日期默认的格式: DD-MON-RR -- YY YYYY TEAR -- MM MONTH -- DD DAY -- HH24 HH12 -- MI SS eq: select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; -- 2021-04-23 14:26:59 select to_char(sysdate,'YYYY-MM-DD HH12:MI:SS') from dual; -- 2021-04-23 02:27:55 字符转换成日期的函数 TO_DATE(char[,fmt[,params]]) -- params: 用于指定日期的语言 -- fmt: 转换的格式 eq: select to_date('2021-04-23','YYYY-MM-DD') from dual; -- 23-4月 -21 -- to_date() 按照系统默认格式显示日期 数字转换成字符的函数 TO_CHAR(number[,fmt]) -- 9 : 显示数字并忽略前面的0 -- 0 : 显示数字,位数不足,用0补齐 -- . 或 D : 显示小数点 -- ,或 G : 显示千位符 -- $ : 美元符号 -- S : 加正负号(前后都可以) eq: select to_char(12345.678,'$99,999.999') from dual; -- $12,345.678 select to_char(12345.678,'S99,999.999') from dual; -- +12,345.678 字符转换成数字的函数 TO_NUMBER(char[,fmt]) -- fmt: 转换的格式,可以省略 eq: select to_number('$1,000','$9999') from dual; -- 1000
6. 在查询语句中使用函数
在查询中使用字符函数 在员工信息表中查询出员工的生日 根据员工身份证号码得到员工生日 create table users(id varchar2(10),name varchar2(11),cardid varchar2(18),deptno varchar2(10),regdate date,age number(4,0)); insert into users values(1,'abc','123456199205051234','01',sysdate,31); select substr(cardid,7,8) from users; -- 19920505 将部门号01全部替换成'信息技术' select replace(deptno,'01','信息技术') from users; 在查询中使用数值函数 将员工信息表中的年龄字段与10取余数 select mod(age,10) from users; -- 1 在查询中使用日期函数 取得员工入职的年份 select extract(year from regdate) from users; 查询出4月份入职的员工信息 select * from users where extract(month from regdate)=4;
这篇关于oracle-函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升