ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle常见函数

2021-03-02 10:33:00  阅读:222  来源: 互联网

标签:sysdate 函数 -- 常见 字符串 dual Oracle select trunc


--修改查询表的信息
select t.*,t.rowid from dept t
select * from dept for update


--字符函数
--1.拼接字符串
select 'abc'||'def' from dual
select concat('as','df') from dual
select concat(empno,ename) from emp
select concat(concat('a','ss'),'ll') from dual
--2.首字母大写 initcap
select initcap('my name is aaa') from dual
select initcap(ename) from emp
--3.小写转大写 upper
select upper('my name is aaa')from dual
--4.大写转小写 lower
select lower('my name is aaa')from dual
--5.截取字符串 substr('截取的原来字符串','从第一位开始截取,第一个是1',【截取长度如果不写直接截取到尾部】)
select substr('my name is aaa',2,3) from dual
--6.替换 replace('替换的原来字符串','需要替换的字符串',【替换后的字符串,如果不写直接将替换的字符串删除】)
select replace('my name is aaa','aaa') from dual--直接删除aaa
select replace('my name is aaa','aaa','***') from dual--把aaa替换成***
--7.去除左边空格或固定字符 ltrim('原来的字符串',【要删除的字符串】)如果不写要删除的字符串默认删除空格
select ltrim(' ame ') from dual --默认删除左边空格
select ltrim('*****name ','*') from dual --删除左边*
--8.去除右边空格或固定字符 rtrim('原来的字符串',【要删除的字符串】)如果不写要删除的字符串默认删除空格
select rtrim(' ame ') from dual --默认删除右边空格
select rtrim(' name*****','*') from dual --删除右边*
--9.去除左右二端空格,但字符中间的空格无法去除 trim('字符串')
select trim(' AAA AAA ') from dual
--10.去除二边固定字符 trim(both '要替换的字符' from '原来字符')
select trim(both '*' from '****AAA AAA****') from dual
--11.rtim 去除左侧
select trim(leading '*' from '****AAA AAA****') from dual
--12.rtim 去除右侧
select trim(trailing '*' from '****AAA AAA****') from dual
--补全字符串
--13.lpad 向左补位
select lpad('10',5,'0') from dual --原来的数时10,一共5位数,向左开始补0
--14.rpad 向左补位
select rpad('10',5,'0') from dual --原来的数时10,一共5位数,向右开始补0


--数学函数
--1.向上取整 ceil
select ceil(4.1) from dual
--2.向下取整 floor
select floor(4.6) from dual
--3.按照一定的精度截取数字 trunc
select trunc(3.1415926,4) from dual
--4.mod(x,y)(返回第一个数除以第二个数的余数)
select mod(23,8),mod(24,8) from dual;

--日期函数
--1.获取系统当前时间 sysdate
select sysdate from dual
--2.本月最后一天 last_day(sysdate)
select last_day(sysdate) from dual
--距离2019-01-01还有几天
select to_date('2019-01-01','yyyy-MM-dd')-sysdate from dual
--距离2019-01-01还有几月
select months_between(to_date('2019-01-01','yyyy-MM-dd'),sysdate) from dual
--trunc 去日期小数点trunc(sysdate)只保留日期
select trunc(sysdate) from dual
--trunc 去日期小数点trunc(sysdate,'year/month/day')只保留相对于的年/月/日,如果是月日期天后面不管是多少都会是1
select trunc(sysdate,'month') from dual
--添加月 add_month()(可正负)
select add_months(sysdate,2) from dual


select trunc(sysdate,'month') from tab_person

 

select upToDate from tab_company where to_date(upToDate,'yyyy-MM-dd')<(select trunc(sysdate) from dual)

select trunc(3.1415926,4) from dual

--转换函数
--将数字转换成固定格式的字符串to_char(如果转换的数量不够,则用空格补充)
select to_char(45521,'999,999,999') from dual
--将日期转换成固定格式的字符串(格式化日期(也可以只格式化到年yyyy))
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
--将字符串转换成日期 to_date()
select to_date('2019-02-01','yyyy-mm-dd') from dual
--将字符串转换成数字(对非数字)
select to_number('12') from dual


--聚合 函数(sum 总数,avg 平均数,max 最大值,min 最小值,count 计数共多少条记录)
select count(*),sum(sal),max(sal),min(sal),avg(sal) from emp
--其他函数
--生成32位随机数 sys_guid()
select sys_guid() from dual
--nullif 判断二个值是否一致,如果一致,返回null,否则输入第一个值
select nullif(sal,3000) from emp
-- 把列值变成别的 decode(列名,值1,要输出的值,列名,值1,要输出的值) decode可以用 case when代替
select decode(deptno,20,'河南',10,'河北',30,'山西') from emp
--判断是否为空 nul
select nvl(comm,0)+sal from emp
————————————————
版权声明:本文为CSDN博主「与黑夜为伍」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/javaasd/article/details/105736742

标签:sysdate,函数,--,常见,字符串,dual,Oracle,select,trunc
来源: https://www.cnblogs.com/qiwb/p/14467660.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有