Oracle函数

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('[email protected]', 'abc', 'tt') from dual;
 ​
 select * from emp;
 ​
 ​
 --将员工姓名中的bc改为 tt
 update emp
 ​
 set   ename=REPLACE(ename, 'bc', 'tt');
      
 ​
 ​
 
 ​

你可能感兴趣的:(oracle,oracle,数据库,sql)