Oracle函数
2024-01-07 22:52:09
oracle内置函数
- 数值函数
- 字符函数
- 日期函数
- 转换函数
函数
字符串函数
函数 | 说明 |
---|---|
CONCAT(X,Y) | 连接字符串X和Y |
INSTR(X,STR[,START][,N) | 从X中查找str,可以指定从start开始,也可以指定从n开始 |
LENGTH(X) | 返回X的长度 |
LOWER(X) | X转换成小写 |
UPPER(X) | X转换成大写 |
LTRIM(X[,TRIM_STR]) | 把X的左边截去trim_str字符串,缺省截去空格 |
RTRIM(X[,TRIM_STR]) | 把X的右边截去trim_str字符串,缺省截去空格 |
TRIM([TRIM_STR FROM]X) | 把X的两边截去trim_str字符串,缺省截去空格 |
REPLACE(X,old,new) | 在X中查找old,并替换成new |
SUBSTR(X,start[,length]) | 返回X的字串,从start处开始,截取length个字符,缺省length,默认到结尾 |
translate | 会把旧数据拆成单个字符去匹配,旧字符在新字符没有匹配到就删除 |
lpad rpad | 左边补位,右边补位 |
?-- 字符串连接 ?select concat('abc','hello') as str from dual; ?-- abchello ?? ?-- 获得字符串长度 ?? ?select length('abc天津') as len from dual; ?-- 5 ?? ?-- 转大写/小写字母 ?select UPPER('abc') from dual; ?--ABC ?? ?select LOWER('aBc') from dual; ?--abc ?? ?-- 去除左右空格 trim ?select trim(' ? ? rererer ? dfdfd ? ? ? ')from dual;--rererer ? dfdfd ?? ?-- 查找替换 ?select replace('abcbc123bc123','bc','k') from dual; --akk123k123 ?? ?-- 截取 字符串 , 从1开始 不是从0开始 ?? ?select SUBSTR('1234567890',2,3) from dual;-- 234 ?select SUBSTR('1234567890',2) from dual;-- 234567890 ?? ??
数字函数
函数 | 说明 |
---|---|
abs(X) | 求绝对值 |
ceil(X) | 向上取整 |
floor(X) | 向下取整 |
mod(X) | 取余 |
power | 幂函数 |
round(X,Y) | 四舍五入 |
sqrt | 求平方根 |
?-- 求绝对值 ? select abs(-2) from dual; ? --2 ? ? --ceil 向上取整 ? select ceil(4.34) from dual;--5 ? select ceil(4.01) from dual;--5 ? select ceil(4.00) from dual;--4 ? --floor 向下取整 ? ?select floor(4.01) from dual;--4 ? select floor(4.94) from dual;--4 ? --round- 四舍五入 ? ? select round(4.41) from dual;--4 ? select round(4.94) from dual;--5 ??
日期函数
函数 | 说明 |
---|---|
sysdate | 获得系统时间 |
add_months(r,n) | 载指定日期r上加一个月份n后的日期 |
extract(time) | 返回指定time当中的年月日等日期部分-- 做提取 |
months_between(r1,r2) | 返回两个日期间的月份数 |
floor(r1,r2) | 计算两个日期的天数 |
?-- 获取当前系统的日期及时间 ? select sysdate from dual; ? ? - add_months(日期,增加/减少的月) ? select sysdate,ADD_MONTHS(sysdate, 3),ADD_MONTHS(sysdate, -3) from dual; ? ? -- MONTHS_BETWEEN 计算两个日期间的月数 ? ? select MONTHS_BETWEEN(sysdate,ADD_MONTHS(sysdate, 3)) from dual; ? ?-- extract(fmt from date) ? fmt 就是 你要提取的内容 ?select EXTRACT( year ?from sysdate) from dual; ?select EXTRACT( month ?from sysdate) from dual; ?select EXTRACT( day ?from sysdate) from dual; ?? ?? ? ?-- floor 计算两个日期的天数 ? ?select FLOOR(sysdate - ADD_MONTHS(sysdate, 3)) from dual; ??
转换函数
?--to_date() 将字符串转为日期 ?? ?--to_char() 把 日期或数字 转换成字符串 ?? ?? ?select to_date('2000-04-19','yyyy-mm-dd') from dual; ? ?? ?? ?SELECT to_char(sysdate,'yyyy/mm/dd') from dual; ?? ?? ?-- 在格式化字符串中,使用双引号对非格式化字符进行引用 ?SELECT to_char(sysdate,'yyyy"年"mm"月"dd"日"') from dual; ??
练习题
?-- 查询2000年12月1日出生的员工信息 ?select ?* ?from emp ?where to_char(borndate,'yyyy-mm-dd')='2000-12-01'; ?? ?select ?* ?from emp ?where borndate=to_date('2000-12-01','yyyy-mm-dd'); ?? ?? ?? ?? ?? ?--update emp set borndate=to_date('2000-12-1','yyyy-mm-dd') where eno=1103 ?? ?--查询员工姓名中包含 大写字母A的员工信息 ?? ?select * ?from emp ?where ename like '%A%'; ?? ?? ?? ?-- ?update emp set ename='bcAvv' where eno in (1103,1102) ?? ?? ?--计算2021-12-12到现在有多少月 ?? ?select MONTHS_BETWEEN(to_date('2021-12-12','yyyy-mm-dd'), sysdate) from dual; ?? ?? ?? ?? ?? ?? ?--查询 在2月出生的学生信息 ?? ?? ?select * from emp; ?? ?select * ?from emp ?where EXTRACT(month from BORNDATE)=2; ?? ?? ?? ?? ?? ?? ?? ?? ?-- 查询身份证 第89位 是 60 的学生信息 ?? ?select * ?? ?from student ?where SUBSTR(idcart, 8, 2) ='60' ?? ?? ?select substr('12011016023234567',8,2) from dual; ?? ?? ?? ?select ? * ? from ? student ? ?? ?alter table student add (idcart VARCHAR2(50)) ?? ?? ?? ?--将邮箱中的abc改为 tt ?? ?update student ?? ?set ? email=REPLACE(email, 'abc', 'tt'); ? ? ? ?? ?select REPLACE('abc@126.com', 'abc', 'tt') from dual; ?? ?select * from emp; ?? ?? ?--将员工姓名中的bc改为 tt ?update emp ?? ?set ? ename=REPLACE(ename, 'bc', 'tt'); ? ? ? ?? ?? ? ??
文章来源:https://blog.csdn.net/ly121862/article/details/135377384
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!