1. 程式人生 > >【sql語句】實驗三 SQL*Plus 中常用函式

【sql語句】實驗三 SQL*Plus 中常用函式

save C:\Users\DH2016PSY\Desktop\資料庫PPT18\SY3\SY3.sql;
save C:\Users\DH2016PSY\Desktop\資料庫PPT18\SY3\SY3.sql append;

1.ASCII:返回與指定的字元對應的ASCII碼。

select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; 

2.CONCAT:連線兩個字串;

select concat('010-',' 888888')||'轉23' tel from dual;

3.INITCAP:返回字串並將字串的第一個字母變為大寫;

select initcap('smith') upfirst from dual;

4.INSTR(C1,C2,I,J):在一個字串中搜索指定的字元,返回發現位置(no:0);
C1:被搜尋的字串
C2:希望搜尋的字串
I:搜尋的開始位置,預設為1
J:出現的位置,預設為1

select instr('hello world ','ello',1,1) instring from dual;

5.LOWER:返回字串,並將所有的字元小寫

select lower('AAABBbbCC')sm from dual;

6.UPPER:返回字串,並將所有的字元大寫

select upper('AAABBbbCC')up from dual;

7.RPAD和LPAD(貼上字元):RPAD在列的右邊補字元,LPAD在列的左邊補字元(小於則刪除原有字元)

select lpad(rpad('ABCDE',4,'r'),20,'l') pad from dual;

8.LTRIM和RTRIM:LTRIM 刪除左邊出現的字串

select ltrim(rtrim('      wow      ',' '),' ') del_blank from dual;

9.SUBSTR(string,start,count)取子字串,從start開始,取count個

select substr('1234567',1,3)sub from dual;//從0開始

10.REPLACE(‘string’,‘s1’,‘s2’)//在string中所有出現的s1均換為s2

select replace ('she love you','she','i')qh from dual;//AMAZING!!!!

11.TRIM(‘s’ from ‘string’),LEADING剪掉前面的字元,TRAILING剪掉後面的字元,如果不指定,預設為空格符//這句至今不懂怎麼用啊

select trim('s'from 'string') trim from dual;

12.ABS:返回指定值的絕對值

select abs(-1e8),abs(-99.9) from dual;

13.EXP:返回一個數字e的n次方根

select exp(2),exp(1) from dual;

14.FLOOR:對給定的數字取整數

select floor(2345.67) from dual;//2345

15.MOD(n1,n2):返回一個n1除以n2的餘數

select mod(10,4),mod(10.22,4) from dual;//2 2.22

16.POWER:返回n1的n2次方根

select power(2,10), power(4,0.5) from dual;

17.ROUND(四捨五入)和TRUNC(只舍)按照指定的精度進行舍入

select round(55.55),round(-55.4),trunc(55.5),trunc(-55.5) from dual;//56 -55 55 -55

18.SIGN取數字n的符號,大於0返回1,小於0返回-1,等於0返回0

select sign(12),sign(-11),sign(0.00) from dual;//1 -1 0

19.SQRT返回數字n的根

select sqrt(64),sqrt(1.21)from dual;//8 1.1

20.TRUNC:按照指定的精度擷取一個數

select trunc(123.344,-2), trunc(12.3444,2)from dual;// 100 12.34

21.ADD_MONTHS增加或減去月份

select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm')from dual;// 200002

22.LAST_DAY返回日期月份對應的最後一天

select to_char(last_day(sysdate),'yyyy.mm.dd')last_day from dual;//2018.11.30

23.MONTHS_BETWEEN(date2,date1)給出date2-date1的月份

select months_between(to_date('20180521','yyyymmdd'),sysdate)delta from dual;

24.NEXT_DAY(date,‘day’)給出日期date和星期x之後計算下一個星期的日期

select to_char(next_day(sysdate,'星期日'), 'yyyy-mm-dd')next_day from dual;

25.SYSDATE:用來得到系統的當前日期

select to_char(sysdate,'yyyy/mm/dd')now from dual;
trunc(date,fmt)按照給出的要求將日期截斷,如果fmt='mi'表示保留分,截斷秒
select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') h1,
	to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') h2 from dual;
//2018.11.21 22:00:00 2018.11.21 22:47:00

26.TO_DATE(string,‘format’)將字串轉化為ORACLE中的一個日期

select to_date('19980924','yyyymmdd')birth from dual;// 24-9月 -98

27.TO_NUMBER:將給出的字元轉換為數字

select to_number('1999')year from dual;

28.LEAST:返回一組表示式中的最小值

select least('啊','安','天') from dual;//啊

29.UID返回標識當前使用者的唯一整數

show user// USER 為 "SCOTT"
用sys使用者登入授權sysdba給system//sys密碼:system密碼 as sysdba
grant sysdba to system
grant select[update,delete,insert] on dba_users to scott;//system授權,授權不足用dba
select username,user_id from dba_users where user_id=uid;//DBA許可權

30.USER返回當前使用者的名字

select user from  dual;

31.MAX(DISTINCT|ALL)求最大值,ALL表示對所有值求最大值,DISTINCT不同值

select max(distinct sal) from emp;

32.MIN(DISTINCT|ALL)求最小值

select min(all sal) from emp;

33.STDDEV(distinct|all)求標準差,//預設all

select stddev(sal) from emp;// 1182.50322
select stddev(distinct sal) from emp;//  1229.95096

34.VARIANCE(DISTINCT|ALL) 求協方差

select variance(sal) from emp;