字符函數: Lower(char):將字符串裝換為小寫(xiě)的格式 Upper(char):將字符串裝換為大寫(xiě)的格式 length(char):返回字符串的長(cháng)度 substr(char,m,n):從m開(kāi)始截取n個(gè)字符串 1)查詢(xún)emp表,名字用小寫(xiě)顯示: select lower(ename) from emp ; 2)查詢(xún)名字的長(cháng)度是5個(gè)字符的員工: select * from emp where length(ename)=5; 3)select substr(ename,2,3) from emp; 這樣,SMITH就變成了MIT 4)使名字的第一個(gè)字符大寫(xiě),其它字符小寫(xiě): select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp; ||:這個(gè)符號在oracle中是個(gè)連接符,就像Java中用“+”連接兩個(gè)String類(lèi)型的字串一樣。 5)select replace(ename,'A','a') from emp; 把ename字段中的所有‘A’替換成‘a’,當然,這樣替換之后僅僅是對查詢(xún)結果的顯示起了作用,不會(huì )真的在數據庫中作替換的 6)to_date函數 insert into myemp values(7903,'MORFLAME','ANALYST',7566,to_date('1988-1-1','yyyy-mm-dd'),2345.23,555.55,20); 本來(lái)oracle的默認日期格式是‘01-1月-1988’,如果不習慣,那么在做插入的時(shí)候就可以使用這個(gè)函數來(lái)用我們喜歡的日期格式做插入,比如to_date(‘1988/1/1’,’yyyy/mm/dd’),這也是可以的。 7)round函數:四舍五入求值 SQL> select round(sal),sal from myemp where ename= 2 'MORFLAME';
ROUND(SAL) SAL ---------- --------- 2345 2345.23 還可以控制小數的位數: select round(sal,1),sal from myemp where ename='MORFLAME'; ROUND(SAL,1) SAL ------------ --------- 2345.2 2345.23 8)trunc函數:不四舍五入,直接舍掉 SQL> select trunc(comm,1),comm from myemp where ename='MORFLAME';
TRUNC(COMM,1) COMM ------------- --------- 555.5 555.55 第二個(gè)參數是-1的情況 SQL> select round(comm,-1),comm from myemp where ename='MORFLAME';
ROUND(COMM,-1) COMM -------------- --------- 560 555.55 9)ceil函數:求比某個(gè)數大的最小整數 SQL> select ceil(comm),comm from myemp where ename='MORFLAME';
CEIL(COMM) COMM ---------- --------- 556 555.55 10)floor函數:求比某個(gè)數小的最大整數 SQL> select floor(comm),comm from myemp where ename='MORFLAME';
FLOOR(COMM) COMM ----------- --------- 555 555.55 11)取模函數mod SQL> select mod(12,3) from dual;--此處的dual表是個(gè)虛擬表,僅僅用來(lái)測試函數而已。
MOD(12,3) ---------- 0 12)abs,求絕對值函數 SQL> select abs(-3) from dual;
ABS(-3) ---------- 3 13)其它數學(xué)函數還有:cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan…… 14)日期函數 sysdate:返回系統時(shí)間 select sysdate from dual; add_months(d,n):從d這個(gè)日期開(kāi)始加上n個(gè)月的日期 求8個(gè)月前入職的員工: select * from myemp where sysdate>add_months(hiredate,8); 求入職天數: select sysdate-hiredate "入職天數",ename from myemp; 入職天數 ENAME ---------- ---------- 10644.4805 SMITH 10579.4805 ALLEN 8073.48059 MORFLAME last_day(d):返回指定日期所在月份的最后一天 求在本月的倒數第三天入職的員工: select ename,hiredate from emp where last_day(hiredate)-2=hiredate; to_char函數: SQL> SELECT ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;
ENAME TO_CHAR(HIREDATE,'YYYY-MM-DDHH ---------- ------------------------------ SMITH 1980-12-17 00:00:00 ALLEN 1981-02-20 00:00:00 WARD 1981-02-22 00:00:00 SQL> SELECT ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'L99,999.99') from emp;
ENAME TO_CHAR(HIREDATE,'YYYY-MM-DDHH TO_CHAR(SAL,'L99,999.99') ---------- ------------------------------ ------------------------- SMITH 1980-12-17 00:00:00 ¥800.00 ALLEN 1981-02-20 00:00:00 ¥1,600.00 WARD 1981-02-22 00:00:00 ¥1,250.00 JONES 1981-04-02 00:00:00 ¥2,975.00 yy:兩位數字的年份:2004年->04 yyyy:四位數字的年份 mm:兩位數字的月份:8月->08 dd:兩位數字的天:30號->30 hh24:24小時(shí)制 hh12:12小時(shí)制 mi:顯示分鐘 ss:顯示秒 9:顯示數字,并忽略前面0 0:顯示數字,如位數不足,則用0補齊 .:在指定位置顯示小數點(diǎn) ,:在指定位置顯示逗號 $:在數字前加美元符號 L:在數字前加本地貨幣符號 C:在數字前加國際貨幣符號 G:在指定位置顯示組分隔符 D:在指定位置顯示小數點(diǎn)符號(.) 如:1980年入職的員工: SQL> SELECT ename,hiredate,to_char(sal,'L99,999.99') from emp where to_char(hiredate,'yyyy')='1980';
SQL> select sys_context('USERENV','session_user') from dual;
SYS_CONTEXT('USERENV','SESSION -------------------------------------------------------------------------------- SCOTT
SQL> select sys_context('USERENV','current_schema') from dual; SYS_CONTEXT('USERENV','CURRENT -------------------------------------------------------------------------------- SCOTT
SQL> select sys_context('USERENV','host') from dual;