select upper ('abcde') from dual ;
--lower----- 把字元轉換成小寫
select lower('abcde') from dual ;
--initcap -----返回所有單詞的首字母大寫,其他字母小寫
select initcap(ename) from emp;
--concat -----字串連線 ,相當於||
select concat('a','b') from dual;
select 'a' || 'b' from dual;
--substr -------查詢字串
select substr('abcde',length('abcde')-2) from dual;
select substr('abcde',-3,3) from dual;
substr(string,position,substring_length)
1、如果position=0, 則被當做1
2、如果position>1, 則從position位置開始找
3、如果position<1, 則從結尾開始找
4、如果第三個位置沒有指定,則從指定位置到結尾
--length ------字串的長度
select length(dname) from dept;
--replace -----字串替換
select replace(ename,'a','a') from emp;
--instr -- -----字串查詢,返回索引值
select instr('hello world','or') from dual; --8 indexof
--lpad ------左側填充
select lpad('smith',10,'*') from dual--左側填充 *****smith
--rpad ------右側填充
select rpad('smith',10,'*') from dual--右側填充 smith*****
--trim -------過濾首位空格
select trim(' mr smith ') from dual --過濾首尾空格 mr smith
--數值函式
--round -----四捨五入,取精度
select round(462,-2) from dual; ------負數往小數點前數 ----500
select round(412.313,2) from dual; -----正數往小數點後數 ----412.13
--trunc -----不四捨五入,直接取最大值
select trunc(462.13,-2) from dual; ----400
--日期函式
--months_between() -----兩個時間之間隔了多少個月
select months_between(sysdate,hiredate) from emp;
--add_months() ------在某個時間點上加乙個月
select add_months(sysdate,1) from dual;
--next_day()
select next_day(sysdate,'星期一') from dual; ----返回下乙個星期一的日期
--last_day
select last_day(sysdate) from dual; ----返回這個月的最後一天
--轉換函式
--to_char
select to_char(sysdate,'yyyy') from dual; ---2011
select to_char(sysdate,'yyyy-mm-dd') from dual; ----2011-07-16
select to_char(sal,'l999,999,999') from emp; ----
select to_char(sysdate,'d') from dual; --返回星期 ----7
--to_number
select to_number('13')+to_number('14') from dual; ------27
--to_date
select to_date('2009-02-10','yyyy-mm-dd') from dual; ----2009/2/10
select to_char('001') from dual; ----001
select to_number('003')from dual; -----3
--通用函式
--nvl()函式 -----有值返回本身,無值返回0
select nvl(comm,0) from emp;
--nullif()函式 ----如果表示式 exp1 與exp2 的值相等則返回 null,否則返回 exp1 的值
nullif(exp1,exp2)
--nvl2()函式
select empno, ename, sal, comm, nvl2(comm, sal+comm, sal) total from emp; ----如果comm不為null,返回sal+comm,否則返回comm
--coalesce()函式--依次考察各引數表示式,遇到非null值即停止並返 回該值。
select empno, ename, sal, comm, coalesce(sal+comm, sal, 0)總收入 from emp;
--case表示式
select empno, ename, sal,
case deptno
when 10 then '財務部'
when 20 then '研發部'
when 30 then '銷售部'
else '未知部門'
end 部門
from emp;
--decode()函式--和 case表示式類似,decode()函式也用於實現多路分支結構
select empno, ename, sal,
decode(deptno, 10, '財務部',
20, '研發部',
30, '銷售部',
'未知部門')
部門 from emp;
case在sql中有兩種寫法,先建立乙個表
create table salgrade(grade int, sal int);
insert into salgrade values(1,1000);
insert into salgrade values(2,2000);
insert into salgrade values(3,3000);
第一種寫法,簡單寫法:
select grade,sal,
case grade
when 1 then 'low'
when 2 then 'middle'
else 'high'
endfrom salgrade;
第二種寫法,查詢寫法:
select grade,sal,
case when sal <=1000 then 'low'
when sal <=2000 then 'middle'
else 'high'
endfrom salgrade;
decode只能代替第一種寫法:
select grade,sal,decode(grade,1,'low',2,'middle','high') from salgrade;
--單行函式巢狀
select empno, lpad(initcap(trim(ename)),10,' ') name, job, sal from emp;
oracle一些常用的單記錄函式
總結一些oracle中常用的單記錄函式。1.0 nvl 作用 從兩個表示式返回乙個非null值 用法 nvl 表示式1,表示式2 如果表示式1的結果不為null,返回表示式1的結果 如果表示式1的結果為null,返回表示式2的結果。引申 表示式1的結果為null,返回表示式2的結果,而表示式2的結果...
Oracle資料庫學習(5)分組函式
g 平均函式 max 最大值函式 min 最小值函式 sum 求和函式 stddev 標準差函式 count 計數函式 例子1 對員工表查詢平均工資 最高工資 最低工資 標準差工資 總工資 總員工數 select round g salary 2 平均工資 max salary 最高工資 min s...
ORACLE單錶查詢
介紹 oracle資料庫系統是美國oracle公司 甲骨文 提供的以分布式資料庫為核心的一組軟體產品,oracle有很多種查詢方法,現在我來教大家一些簡單的條件查詢 第一種 較為精準的查詢 我要從oracle資料庫中查詢姓king名字為steven的人 select from employees w...