【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;