--修改查询表的信息
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
Oracle常见函数
最新推荐文章于 2024-06-18 21:26:27 发布