Oracle 单行函数

  • 单行函数

round()      四舍五入

trunc()       截取

abs()              求绝对值

mod()        求余数

length()     长度

upper()      全部转化位大写

lower()       全部转化为小写

initcap()     全部转化为首字母大写

lpad()         从左边补全

rpad()         从右边补全

ltrim()         从左边截取

rtrim()         从右边截取

instr()         查询指定字符串下标

substr()      获取从指定下标开始的字符串

replace()     替换

translate()  转换

 

(1). 数字 / 字符 / 字符串操作

  【 返回 'hello''的大写字符串】

       selectupper(‘hello’) from dual;

 

 【 返回 ''hello'的首字母是大写的字符串】

       selectinitcap(‘hello’)from dual;

 

  【返回'tianqizhenhao' 该字符串的后7 个字符】

       selectsubstr(‘tianqizhenhao’,-7,7) from dual;

 

(2).日期操作

1. 显示41号部门员工 姓名, 进入公司的天数,年数,月份数,星期数【分别加上中文别名】

 select  e.first_name 姓名,

sysdate -  e.hiredate天数,

months_between(sysdate,e.hiredate) 月数,

(months_between(sysdate,e.hiredate))/12年分数

froms_emp  e

wheree.deptno = 41;

 

-- 2. 显示当前时间

selectsysdate from dual ;

 

(3).转换函数

【获得当前年份,月份,日期  [ char]】

select

to_char(sysdate,'yyyy') 年份,

to_char(sysdate,'mm') 月份,

to_char(sysdate,'dd') 日期

from dual

 

  • 将当前的时间 转换成 字符串输出【 即 date 类型 转换成 char 类型】

select  to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual

 

【将'2011-09-12 '  转换成 date 类型】

selectto_date('2011-09-12','yyyy-mm-dd') from dual

 

【 获得字符串 '2011-09-12 ' 的月份】

select  to_number(to_char( to_date('2010-09-18','yyyy-mm-dd') , 'mm')) from dual

 

【获得 8732034.56 用如下形式表示: 8,732,034.56】 

select  to_char( 8732034.56,'9,999,999.99') from dual

 

【获得 8732034.56 用如下形式表示: $8,732,034.56】 

select  to_char( 8732034.56,'$9,999,999.99') from dual

 

decode(A,b,c,d,e,f,g,h)

如果A=b,输出c;

如果A=d,输出e;

如果A=f,输出g;

如果b,d,f都不满足A,输出h.

 

【输出显示每个订单编号及支付方式,支付方式要么是现金,要么是信用卡,否则就是未知数。】

       select id,decode(payment_type,'CASH','现金','CREDIT','信用卡','未知数' )

       froms_ord;

 

【请把员工工资分为3等,超过2000员的为高等在1500到2000之间的为中等,低于1500的为低等】

select first_name 员工名

case

       when salary<1500 then '低等'

       when salary>=1500 and salary<2000 then '中等'

       when salary>=2000 then '高等'

       end 工资等级

froms_emp;

      

       注意:case后面是否出现列名,取决于when后面条件是否出现比较列

       如果when后面已经出现列名,那case后面务必不能写列名,

       如果when后面是值,那么必须在case后面指定列名,否则无法确定所给的值的真正含义

 

posted @ 2017-11-16 19:44  叶墨悻  阅读(223)  评论(0编辑  收藏  举报