SQL
中的單記錄函數(shù)
A???????? a????? ZERO???? SPACE
ZH C
3.CONCAT
高乾競(jìng)電話
4.INITCAP
UPP
INSTRING
NAME?? LENGTH(NAME) ADDR???????????? LENGTH(ADDR)?????? SAL LENGTH(TO_CHAR(SAL))
?
7.LOWER
AABBCCDD
UPPER
?
9.RPAD
和LPAD(粘貼字符)
LPAD(RPAD('GAO',1
LTRIM(RTRIM('
SUBSTR('
REPLACE('HELOVEYOU','HE','I')
SQL> select xm from table1 where soundex(xm)=soundex('weather');
XM
15.ABS
ABS(100) ABS(-100)
ACOS(-1)
ASIN(0.5)
ATAN(1)
CEIL(3.1415927)
COS(-3.1415927)
COSH(20)
EXP(2)??? EXP(1)
FLOOR(2345.67)
LN(1)???? LN(2) LN(2.7182818)
LOG(2,1)? LOG(2,4)
MOD(10,3)? MOD(3,3)? MOD(2,3)
POWER(2,10) POWER(3,3)
ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
SIGN(123) SIGN(-100)?? SIGN(0)
SIN(1.57079) |
31.SIGH
返回雙曲正弦的值
SQL> select sin(20),sinh(20) from dual;
SIN(20)? SINH(20)
--------- ---------
.91294525 242582598
32.SQRT
返回?cái)?shù)字n的根
SQL> select sqrt(64),sqrt(10) from dual;
SQRT(64)? SQRT(10)
--------- ---------
8 3.1622777
33.TAN
返回?cái)?shù)字的正切值
SQL> select tan(20),tan(10) from dual;
TAN(20)?? TAN(10)
--------- ---------
2.2371609 .64836083
34.TANH
返回?cái)?shù)字n的雙曲正切值
SQL> select tanh(20),tan(20) from dual;
TANH(20)?? TAN(20)
--------- ---------
1 2.2371609
?
35.TRUNC
按照指定的精度截取一個(gè)數(shù)
SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;
TRUNC1 TRUNC(124.16666,2)
--------- ------------------
100???????????? 124.16
?
36.ADD_MONTHS
增加或減去月份
SQL> select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;
TO_CHA
------
200002
SQL> select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;
TO_CHA
------
199910
37.LAST_DAY
返回日期的最后一天
SQL> select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;
TO_CHAR(SY TO_CHAR((S
---------- ----------
2004.05.09 2004.05.10
SQL> select last_day(sysdate) from dual;
LAST_DAY(S
----------
31-5
月 -04
38.MONTHS_BETWEEN(date2,date1)
給出date2-date1的月份
SQL> select months_between('19-12月-1999','19-3月-1999') mon_between from dual;
MON_BETWEEN
-----------
? 9
SQL>select months_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.dd')) mon_betw from dual;
MON_BETW
---------
-60
39.NEW_TIME(date,'this','that')
給出在this時(shí)區(qū)=other時(shí)區(qū)的日期和時(shí)間
SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time(sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;
BJ_TIME???????????? LOS_ANGLES
------------------- -------------------
2004.05.09 11:05:32 2004.05.09 18:05:32
40.NEXT_DAY(date,'day')
給出日期date和星期x之后,計(jì)算下一個(gè)星期x的日期
SQL> select next_day('18-5月-2001','星期五') next_day from dual;
NEXT_DAY
----------
25-5
月 -01
?
41.SYSDATE
用來(lái)得到系統(tǒng)的當(dāng)前日期
SQL> select to_char(sysdate,'dd-mm-yyyy day') from dual;
TO_CHAR(SYSDATE,'
-----------------
trunc(date,fmt)按照給出的要求將日期截?cái)?span lang="EN-US">,如果fmt='mi'表示保留分,截?cái)嗝?span lang="EN-US">
SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;
HH????????????????? HHMM
------------------- -------------------
2004.05.09 11:00:00 2004.05.09 11:17:00
?
42.CHARTOROWID
將字符數(shù)據(jù)類型轉(zhuǎn)換為ROWID類型
SQL> select rowid,rowidtochar(rowid),ename from scott.emp;
ROWID????????????? ROWIDTOCHAR(ROWID) ENAME
------------------ ------------------ ----------
AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH
AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN
AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD
AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES
43.CONVERT(c,dset,sset)
將源字符串 sset從一個(gè)語(yǔ)言字符集轉(zhuǎn)換到另一個(gè)目的dset字符集
SQL> select convert('strutz','we8hp','f7dec') "conversion" from dual;
conver
------
strutz
44.HEXTORAW
將一個(gè)十六進(jìn)制構(gòu)成的字符串轉(zhuǎn)換為二進(jìn)制
45.RAWTOHEXT
將一個(gè)二進(jìn)制構(gòu)成的字符串轉(zhuǎn)換為十六進(jìn)制
?
46.ROWIDTOCHAR
將ROWID數(shù)據(jù)類型轉(zhuǎn)換為字符類型
?
47.TO_CHAR(date,'format')
SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2004/05/09 21:14:41
?
48.TO_DATE(string,'format')
將字符串轉(zhuǎn)化為ORACLE中的一個(gè)日期
49.TO_MULTI_BYTE
將字符串中的單字節(jié)字符轉(zhuǎn)化為多字節(jié)字符
SQL>? select to_multi_byte('高') from dual;
TO
--
高
50.TO_NUMBER
將給出的字符轉(zhuǎn)換為數(shù)字
SQL> select to_number('1999') year from dual;
???? YEAR
---------
???? 1999
51.BFILENAME(dir,file)
指定一個(gè)外部二進(jìn)制文件
SQL>insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));
52.CONVERT('x','desc','source')
將x字段或變量的源source轉(zhuǎn)換為desc
SQL> select sid,serial#,username,decode(command,
? 2? 0,'none',
? 3? 2,'insert',
? 4? 3,
? 5? 'select',
? 6? 6,'update',
? 7? 7,'delete',
? 8? 8,'drop',
? 9? 'other') cmd? from v$session where type!='background';
????? SID?? SERIAL# USERNAME?????????????????????? CMD
--------- --------- ------------------------------ ------
??????? 1???????? 1??????????????????????????????? none
??????? 2???????? 1??????????????????????????????? none
??????? 3???????? 1??????????????????????????????? none
??????? 4???????? 1??????????????????????????????? none
??????? 5???????? 1??????????????????????????????? none
??????? 6???????? 1??????????????????????????????? none
??????? 7????? 1275??????????????????????????????? none
??????? 8????? 1275??????????????????????????????? none
??????? 9??????? 20 GAO??????????????????????????? select
?????? 10??????? 40 GAO??????????????????????????? none
53.DUMP(s,fmt,start,length)
DUMP
函數(shù)以fmt指定的內(nèi)部數(shù)字格式返回一個(gè)VARCHAR2類型的值
SQL> col global_name for a30
SQL> col dump_string for a50
SQL> set lin 200
SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name;
GLOBAL_NAME??????????????????? DUMP_STRING
------------------------------ --------------------------------------------------
ORACLE.WORLD?????????????????? Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D
54.EMPTY_BLOB()
和EMPTY_CLOB()
這兩個(gè)函數(shù)都是用來(lái)對(duì)大數(shù)據(jù)類型字段進(jìn)行初始化操作的函數(shù)
55.GREATEST
返回一組表達(dá)式中的最大值,即比較字符的編碼大小.
SQL> select greatest('AA','AB','AC') from dual;
GR
--
AC
SQL> select greatest('
啊','安','天') from dual;
GR
--
天
56.LEAST
返回一組表達(dá)式中的最小值
SQL> select least('啊','安','天') from dual;
LE
--
啊
57.UID
返回標(biāo)識(shí)當(dāng)前用戶的唯一整數(shù)
SQL> show user
USER 為"GAO"
SQL> select username,user_id from dba_users where user_id=uid;
USERNAME???????????????????????? USER_ID
------------------------------ ---------
GAO?????????????????????????????????? 25
?
58.USER
返回當(dāng)前用戶的名字
SQL> select user from? dual;
USER
------------------------------
GAO
59.USEREVN
返回當(dāng)前用戶環(huán)境的信息,opt可以是:
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
ISDBA? 查看當(dāng)前用戶是否是DBA如果是則返回true
SQL> select userenv('isdba') from dual;
USEREN
------
FALSE
SQL> select userenv('isdba') from dual;
USEREN
------
TRUE
SESSION
返回會(huì)話標(biāo)志
SQL> select userenv('sessionid') from dual;
USERENV('SESSIONID')
--------------------
???????????????? 152
ENTRYID
返回會(huì)話人口標(biāo)志
SQL> select userenv('entryid') from dual;
USERENV('ENTRYID')
------------------
???????????????? 0
INSTANCE
返回當(dāng)前INSTANCE的標(biāo)志
SQL> select userenv('instance') from dual;
USERENV('INSTANCE')
-------------------
????????????????? 1
LANGUAGE
返回當(dāng)前環(huán)境變量
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
LANG
返回當(dāng)前環(huán)境的語(yǔ)言的縮寫
SQL> select userenv('lang') from dual;
USERENV('LANG')
----------------------------------------------------
ZHS
TERMINAL
返回用戶的終端或機(jī)器的標(biāo)志
SQL> select userenv('terminal') from dual;
USERENV('TERMINA
----------------
GAO
VSIZE(X)
返回X的大小(字節(jié))數(shù)
SQL> select vsize(user),user from dual;
VSIZE(USER) USER
----------- ------------------------------
????????? 6 SYSTEM
?
60.AVG(DISTINCT|ALL)
all
表示對(duì)所有的值求平均值,distinct只對(duì)不同的值求平均值
SQLWKS> create table table3(xm varchar(8),sal number(7,2));
語(yǔ)句已處理。
SQLWKS>? insert into table3 values('gao',1111.11);
SQLWKS>? insert into table3 values('gao',1111.11);
SQLWKS>? insert into table3 values('zhu',5555.55);
SQLWKS> commit;
SQL> select avg(distinct sal) from gao.table3;
AVG(DISTINCTSAL)
----------------
???????? 3333.33
SQL> select avg(all sal) from gao.table3;
AVG(ALL SAL)
-----------
??? 2592.59
61.MAX(DISTINCT|ALL)
求最大值,ALL表示對(duì)所有的值求最大值,DISTINCT表示對(duì)不同的值求最大值,相同的只取一次
SQL> select max(distinct sal) from scott.emp;
MAX(DISTINCTSAL)
----------------
??????????? 5000
62.MIN(DISTINCT|ALL)
求最小值,ALL表示對(duì)所有的值求最小值,DISTINCT表示對(duì)不同的值求最小值,相同的只取一次
SQL> select min(all sal) from gao.table3;
MIN(ALLSAL)
-----------
??? 1111.11
63.STDDEV(distinct|all)
求標(biāo)準(zhǔn)差,ALL表示對(duì)所有的值求標(biāo)準(zhǔn)差,DISTINCT表示只對(duì)不同的值求標(biāo)準(zhǔn)差
SQL> select stddev(sal) from scott.emp;
STDDEV(SAL)
-----------
? 1182.5032
SQL> select stddev(distinct sal) from scott.emp;
STDDEV(DISTINCTSAL)
-------------------
?????????? 1229.951
?
64.VARIANCE(DISTINCT|ALL)
求協(xié)方差
SQL> select variance(sal) from scott.emp;
VARIANCE(SAL)
-------------
??? 1398313.9
65.GROUP BY
主要用來(lái)對(duì)一組數(shù)進(jìn)行統(tǒng)計(jì)
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno;
?? DEPTNO? COUNT(*)? SUM(SAL)
--------- --------- ---------
?????? 10???????? 3????? 8750
?????? 20???????? 5???? 10875
?????? 30???????? 6????? 9400
?
66.HAVING
對(duì)分組統(tǒng)計(jì)再加限制條件
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)>=5;
?? DEPTNO? COUNT(*)? SUM(SAL)
--------- --------- ---------
?????? 20???????? 5???? 10875
?????? 30???????? 6????? 9400
SQL> select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by tno ;
?? DEPTNO? COUNT(*)? SUM(SAL)
--------- --------- ---------
?????? 20???????? 5???? 10875
?????? 30???????? 6????? 9400
67.ORDER BY
用于對(duì)查詢到的結(jié)果進(jìn)行排序輸出
SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;
?? DEPTNO ENAME??????????? SAL
--------- ---------- ---------
?????? 10 KING??????????? 5000
?????? 10 CLARK?????????? 2450
?????? 10 MILLER????????? 1300
?????? 20 SCOTT?????????? 3000
?????? 20 FORD??????????? 3000
?????? 20 JONES?????????? 2975
?????? 20
?????? 20 SMITH??????????? 800
?????? 30 BLAKE?????????? 2850
?????? 30 ALLEN?????????? 1600
?????? 30 TURNER????????? 1500
?????? 30 WARD??????????? 1250
?????? 30 MARTIN????????? 1250
?????? 30 JAMES??????????? 950