oracle字符串类型和函数

8 篇文章 0 订阅

一、字符串类型及函数

字符类型分 3 种,char(n) 、varchar(n)、varchar2(n) ; 

char(n)固定长度字符串,假如长度不足 n,右边空格补齐; 

varchar(n)可变长度字符串,假如长度不足 n,右边不会补齐; 

varchar2(n)可变长度字符串,Oracle 官方推荐使用,向后兼容性好


char(n)   VS   varchar2(n) char(n)查询效率相对较高,varchar2(n)存储空间相对较小;


select  length(userName) as   char   length,length(password)as   varchar2   length  from  t_user3;


lpad() 向左补全字符串:select  lpad  (stuno,6,'0') from t_user3;

 rpad() 向右补全字符串:select rpad (stuno,6,'0') from t_user3; 

lower() 返回字符串小写:select lower (userName)from t_user3; 

upper() 返回字符串大写:select uppe r(userName)from t_user3;

 initcap() 单词首字符大写:select initcap(userName)from t_user3; 

length() 返回字符串长度:select length(password)from t_user3; 

substr() 截取字符串:select substr(userName,1,2)from t_user3; 

instr() 获取字符串出现的位置:select instr(password,'23',2,2)from t_user3; 

ltrim() 删除左侧空格:select ltrim(userName) from t_user3;

 rtrim() 删除右侧空格:select rtrim(userName) from t_user3;

 trim() 删除两侧空格:select trim(userName) from t_user3;

 concat() 串联字符串:select concat(userName,password)from t_user3; 

reverse() 反转字符串:select reverse(userName)from t_user3;


二、数值类型及函数


number 是 oracle 中的数据类型;

number(precision,scale); 

Precision,scale 均可选; 

Precision 代表精度,sacle 代表小数位的位数;

Precision 范围[1,38]scale 范围[-84,127] 

举例: 

12345.678 Precision 是 8 scale 是 3;

常用方法: 

abs() 求绝对值;

select abs(n1)from t_number where id=1; round() 

四舍五入:

select round(n1,2)from t_number where id=1; 

ceil() 向上取整:

select ceil(n1)from t_number where id=2;

 floor 向下取整:

select floor(n1)from t_numbe rwhere id=2; 

Mod()取模:

select mod(5,3)fromdual; 

Sign()正负性:

select sign(n1) from t_number where id=1; 

Sqrt() 求平方根:

select sqrt(9)from dual; 

Power()求乘方:

select power(2,3)from dual; 

Trunc()截取:

select trunc(123.456,2)from dual; 

To_char() 格式化数值:常见的字符匹配有 0、9、,、$、FM、L、C

 select to_char(123.45,'0000.000') from dual;

 select to_char(123.45,'9999.999') from dual; 

select to_char(123123,'99,999,999.99') from dual; 

select t o_char(123123.3,'FM99,999,999.99') from dual;

 select to_char(123123.3,'$99,999,999.99') from dual; 

select  to_char(123123.3,'L99,999,999.99') from dual;

select  to_char(123123.3,'99,999,999.99C') from dual;

三、日期类型及函数

Date 和 timestamp(时间戳) 

Date 包含信息 century(世纪信息) year 年 month 月 day 日 hour 小时 minute 分钟 second 秒 Timestamp 一般用于日期时间要求非常精确的情况,精确到毫秒级; insertintot_datevalues(1,sysdate,systimestamp);
下面重点讲 date 类型的常用函数: 

select sysdate from dual; 

select systimestamp from dual;
Add_months 添加月份 select add_months(d1,2)fromt_datewhereid=1;

 Last_day 返回指定日期月份的最后一天 select  last_day(d1)from t_date where id=1;
updatet_date setd3=to_date('2016-12-20','YYYY-MM-DD') where id=1; 

updatet_date setd3=to_date('2016-12-2018:31:34','YYYY-MM-DD HH24:MI:SS') where id=1;
Months_between 返回两个日期的相差月数 select months_between(d1,d3)from t_date where id=1;

 next_day 返回特定日期之后的一周内的日期:select next_day(d1,2)from t_date where id=1; 

Trunc 截取日期: select trunc(d1,'YYYY') from t_date where id=1; 

select trunc(d1,'MM') fromt_datewhereid=1;

select trunc(d1,'DD') from t_date where id=1; 

select trunc(d1,'HH') from t_date where id=1; 

select trunc(d1,'MI') from t_date where id=1;
Extract 返回日期的某个域: select extract(year from sysdate) from dual; 

select extract(month from sysdate) from dual; 

select extract(day from sysdate) from dual; 

select extract(Hour from systimestamp)from dual;

 select extract(minute from systimestamp)from dual; 

select extract(second from systimestamp)from dual;
To_char 将日期转换成字符串:

select to_char(d1,'YYYY-MM-DD') from t_date where id=1; 

select to_char(d1,'YYYY-MM-DDHH24:MI:SS') from t_date where id=1;


四、其他常用处理函数

常用的聚合函数:

 Max 求最大值:select max(sal) from emp ; 

Min 求最小值:select min(sal) from emp;

 Avg 求平均值:select avg(sal) from emp;

Sum 求和:select sum(sal) from emp;

Count 统计记录数:select count(ename) from emp;

Nvl 空值处理:select ename,nvl(sal,0)from emp; 

rownum Oracle 分页:select * from(select a.*,rownum rn  from(select * from emp)A   where  rownum<=10)  where  rn>5;
Oracle 中的运算:

 select  2+1from  dual; 

select  2-1 from   dual; 

select  2*1 from  dual; 

select  2/1 from   dual;
条件判断式: Betweenand 范围查询:

 select  * from  emp   where  sal  between  900  and  1500; 

select *   from  emp   where  sal>=900   and    sal<=1500;
In 集合范围: 

select   ename,hiredate  from   emp where  ename   in(select   distinct ename  from  bonus)
Like 模糊查询:

 select  *   from   emp    wheree   name   like '%M%' 

select   *   from   emp    where   ename   like  'M%' 

select   *   from   emp    where   ename   like'_M%'


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值