標籤:日期函數 計算 注意 資料庫 大小寫 this 精確 span 函數
單行函數--操作資料對象--接受參數返回一個結果--只對一行進行變換--每行返回一個結果--可以轉換資料類型--可以嵌套--參數可以是一列或一個值
字元函數SQL> select lower(‘HELLO‘) 大寫轉小寫,upper(‘hello2‘) 小寫轉大寫,initcap(‘hellothis world‘) 首字母大寫 from dual;大寫 小寫轉 首字母大寫----- ------ ----------------hello HELLO2 Hello This World
concat串連函數--SQL> select ‘hello‘ || ‘world‘ 串連函數1,concat(‘fly‘,‘with‘) 串連函數2 from dual;串連函數1 串連函---------- -------helloworld flywith
substr(a,b)--從a中,第b位開始取substr(a,b,c)--從a中,第b位開始提取c個字元SQL> select substr(‘abcdefgh‘,3) result1,substr(‘12345678‘,2,5) result2 from dual;RESULT RESUL------ -----cdefgh 23456
length擷取字元數lengthb擷取位元組數一個中文是2個位元組SQL> select length(‘abcde‘),length(‘世界‘),length(‘abcde‘),lengthb(‘世界‘) from dual;LENGTH(‘ABCDE‘) LENGTH(‘世界‘) LENGTH(‘ABCDE‘) LENGTHB(‘世界‘)--------------- -------------- --------------- --------------- 5 2 5 4
lpad()左填充函數rpad()右填充函數SQL> select lpad(‘abcd‘,10,‘*‘),rpad(‘abcd‘,10,‘#‘) from dual;LPAD(‘ABCD RPAD(‘ABCD---------- ----------******abcd abcd######
instr(‘母串‘,‘子串‘);在母串中尋找子串,返回子串在母串中的位置,找不到返回0。SQL> select instr(‘abcdef‘,‘de‘) from dual;INSTR(‘ABCDEF‘,‘DE‘)-------------------- 4
trim去掉前後指定的字元,字元可以是空格,也可以不是空格SQL> select trim(‘h‘ from ‘hehlloh‘) from dual;--注意去除的是最前後或者最後面的指定字元,中間的不會去除--注意指定字元區分大小寫TRIM(-----ehllo
replace替換SQL> select replace(‘helloword‘,‘w‘,‘#‘) from dual;REPLACE(‘---------hello#ord--注意是全域替換,並非只替換一個
數字函數round:四捨五入SQL> select round(45.926,2) AA,round(45.926,1) BB,round(45.926,0) CC,round(45.926,-1) DD,round(45.926,-2) EE from dual; AA BB CC DD EE---------- ---------- ---------- ---------- ---------- 45.93 45.9 46 50 0-- 1保留到小數點後1位-- 0保留到個位-- -1保留到十位-- -2保留到百位
trunc:截斷小數點後面的n位SQL> select trunc(45.926,1) from dual;TRUNC(45.926,1)--------------- 45.9
mod求餘SQL> select mod(4,3) from dual; MOD(4,3)---------- 1
日期函數oracle中日期類型資料實際含有兩個值:日期和時間。預設的日期格式是 DD-MON-RRSQL> select sysdate-1 昨天,sysdate 今天,sysdate+1 明天 from dual;昨天 今天 明天-------------- -------------- --------------05-1月 -17 06-1月 -17 07-1月 -17
to_char(‘日期/數字‘,format)把數字或者日期轉換成指定格式的字串select to_char(sysdate-1,‘yyyy-mm-dd hh24:mi:ss‘) 昨天, to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) 今天, to_char(sysdate+1,‘yyyy-mm-dd hh24:mi:ss‘) 明天from dual昨天 今天 明天------------------- ------------------- -------------------2017-01-05 22:52:02 2017-01-06 22:52:02 2017-01-07 22:52:02
日期的數學運算--在日期上加上或減去一個數字結果仍然為日期--兩個日期相減返回日期之間相差的天數--可以用數字除24來向日期中加上或減去小時
--查詢員工入職時間,按照天、周、月、年方式顯示select ename,sysdate-hiredate 天,(sysdate-hiredate)/7 周,(sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年 from emp
months_between()--兩個日期相差的月數--精確計算員工的入職月數SQL> select months_between(sysdate,hiredate) 入職月數 from emp;
add_months()--向指定日期中加上若干月數SQL> select to_char(add_months(sysdate,2),‘yyyy-mon-dd‘) 當前月數加上兩個月 from emp;
next_day()--指定日期的下一個日期(天)--查詢當前日期的下一個周一SQL> select to_char(next_day(sysdate,‘星期一‘),‘yyyy-mon-dd‘) 當前日期的下一個星期一 from dual;結果2017-1月 -09
last_day()--本月的最後一天SQL> select to_char(last_day(sysdate),‘yyyy-mon-dd‘) 當前月數加上兩個月 from emp;round()--日期的四捨五入(按月四捨五入,過月半,則顯示下個月)trunc()--日期截斷
資料庫 資料庫SQL語句二