當進行全表掃描時,CACHE提示能夠將表的檢索塊放置在緩衝區緩存中最近最少列表LRU的最近使用端
例如:
SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
直接插入到表的最後,可以提高速度.
insert /*+append*/ into test1 select * from test4 ;
203. /*+NOAPPEND*/
通過在插入語句生存期內停止並行模式來啓動常規插入.
ORACLE內部函數篇
204. 如何得到字符串的第一個字符的ASCII值?
ASCII(CHAR)
SELECT ASCII('ABCDE') FROM DUAL;
結果: 65
CHR(N)
SELECT CHR(68) FROM DUAL;
結果: D
CONCAT(CHAR1,CHAR2)
SELECT CONCAT('ABC','DEFGH') FROM DUAL;
結果: 'ABCDEFGH'
DECODE(CHAR,N1,CHAR1,N2,CHAR2...)
SELECT DECODE(DAY,1,'SUN',2,'MON') FROM DUAL;
將字符串CHAR的第一個字符爲大寫,其餘爲小寫.
SELECT INITCAP('ABCDE') FROM DUAL;
取一字符串CHAR的長度.
SELECT LENGTH('ABCDE') FROM DUAL;
將字符串CHAR全部變爲小寫.
SELECT LOWER('ABCDE') FROM DUAL;
用字符串CHAR2包括的字符左填CHAR1,使其長度爲N.
SELECT LPAD('ABCDEFG',10'123') FROM DUAL;
結果: '123ABCDEFG'
從字符串CHAR的左邊移去字符串SET中的字符,直到第一個不是SET中的字符爲止.
SELECT ('CDEFG','CD') FROM DUAL;
結果: 'EFG'
取字符CHAR的第一個字符大寫,其餘字符爲小寫.
SELECT NLS_INITCAP('ABCDE') FROM DUAL;
將字符串CHAR包括的字符全部小寫.
SELECT NLS_LOWER('AAAA') FROM DUAL;
將字符串CHAR包括的字符全部大寫.
SELECT NLS_UPPER('AAAA') FROM DUAL;
用字符串CHAR3代替每一個列值爲CHAR2的列,其結果放在CHAR1中.
SELECT REPLACE(EMP_NO,'123','456') FROM DUAL;
用字符串CHAR2右填字符串CHAR1,使其長度爲N.
SELECT RPAD('234',8,'0') FROM DUAL;
移去字符串CHAR右邊的字符串SET中的字符,直到最後一個不是SET中的字符爲止.
SELECT RTRIM('ABCDE','DE') FROM DUAL;
得到字符串CHAR從M處開始的N個字符. 雙字節字符,一個漢字爲一個字符的.
SELECT SUBSTR('ABCDE',2,3) FROM DUAL;
得到字符串CHAR從M處開始的N個字符. 雙字節字符,一個漢字爲二個字符的.
SELECT SUBSTRB('ABCDE',2,3) FROM DUAL;
將CHAR1中的CHAR2的部分用CHAR3代替.
SELECT TRANSLATE('ABCDEFGH','DE','MN') FROM DUAL;
將字符串CHAR全部爲大寫.
將N個月增加到D日期.
SELECT ADD_MONTHS(SYS2003-10-17,5) FROM DUAL;
得到包含D日期的月份的最後的一天的日期.
SELECT LAST_DAY(SYS2003-10-17) FROM DUAL;
得到兩個日期之間的月數.
SELECT MONTH_BETWEEN(D1,D2) FROM DUAL;
得到比日期D晚的由CHAR命名的第一個週日的日期.
SELECT NEXT_DAY(TO_2003-10-17('2003/09/20'),'SATDAY') FROM DUAL;
得到按指定的模式FMT舍入到的最進的日期.
SELECT ROUNT('2003/09/20',MONTH) FROM DUAL;
得到當前系統的日期和時間.
SELECT SYS2003-10-17 FROM DUAL;
將日期D轉換爲FMT的字符串.
SELECT TO_CHAR(SYS2003-10-17,'YYYY/MM/DD') FROM DUAL;
將字符串CHAR按FMT的格式轉換爲日期.
SELECT TO_2003-10-17('2003/09/20','YYYY/MM/DD') FROM DUAL;
得到N的絕對值.
SELECT ABS(-6) FROM DUAL;
得到大於或等於N的最大整數.
SELECT CEIL(5.6) FROM DUAL;
得到N的餘弦值.
SELECT COS(1) FROM DUAL;
得到N的正弦值.
SELECT SIN(1) FROM DUAL;
得到N的雙曲餘弦值.
SELECT COSH(1) FROM DUAL;
得到N的E的N次冪.
SELECT EXP(1) FROM DUAL;
得到小於或等於N的最小整數.
SELECT FLOOR(5.6) FROM DUAL;
得到N的自然對數.
SELECT LN(1) FROM DUAL;
得到以M爲底N的對數.
SELECT LOG(2,8) FROM DUAL;
得到M除以N的餘數.
SELECT MOD(100,7) FROM DUAL;
得到M的N冪.
SELECT POWER(4,3) FROM DUAL;
將N舍入到小數點後M位.
SELECT (78.87653,2) FROM DUAL;
當N<0時,得到-1;
當N>0時,得到1;
當N=0時,得到0;
SELECT SIGN(99) FROM DUAL;
得到N的雙曲正弦值.
SELECT SINH(1) FROM DUAL;
得到N的平方根,N>=0
SELECT SORT(9) FROM DUAL;
得到N的正切值.
SELECT TAN(0) FROM DUAL;
得到N的雙曲正切值.
SELECT TANH(0) FROM DUAL;
得到在M位截斷的N的值.
SELECT TRUNC(7.7788,2) FROM DUAL;
計算滿足條件的記錄數.
SELECT COUNT(*) FROM TABLE1 WHERE COL1='AAA';
對指定的列求最大值.
SELECT MAX(COL1) FROM TABLE1;
對指定的列求最小值.
SELECT MIN(COL1) FROM TABLE1;
對指定的列求平均值.
SELECT AVG(COL1) FROM TABLE1;
計算列的和.
SELECT SUM(COL1) FROM DUAL;
將字符轉換爲數值.
SELECT TO_NUMBER('999') FROM DUAL;
255. CHARTOROWID(CHAR)
將包含外部語法ROWID的CHAR或VARCHAR2數值轉換爲內部的二進制語法,參數CHAR必須是包含外部語法的ROWID的18字符的字符串.
SELECT NAME FROM BSEMPMS WHERE ROWID=CHARTOROWID('AAAAfZAABAAACp8AAO');
NAME : LEIXUE
CONVERT將字符串CHAR中的字符從SOURCE_CHAR_SET標識的字符集轉換爲由DEST_CHAR_SET標識的字符集
CONVERSION: Gross
將包含十六進制的CHAR轉換爲一個RAW數值.
INSERT INTO BSEMPMS(RAW_COLUMN) SELECT HEXTORAW('7D') FROM TEST;
將RAW數值轉換爲一個包含十六進制的CHAR值.
SELECT RAWTOHEX(RAW_COLUMN) 'CONVERSION' FROM BSEMPMS;
CONVERSION: 7D
將一個ROWID數值轉換爲VARCHAR2數據類型.
SELECT ROWID FROM BSEMPMS WHERE ROWIDTOCHAR(ROWID) LIKE '%BR1AAB%';
將CHAR中的單字節轉換爲等價的多字節字符.
SELECT TO_MULTI_BYTE('ASFDFD') FROM TEST;
將CHAR中的多字節轉換爲等價的單字節字符.
SELECT TO_SINGLE_BYTE('ASFDFD') FROM TEST;
將文本TEXT按照指定的轉換方式轉換成數據庫字符集和民族字符集.
其中TEXT是待轉換的.
USING CHAR_CS參數轉換TEXT爲數據庫字符集,輸出數據類型是VARCHAR2.
USING NCHAR_CS參數轉換TEXT爲數據庫字符集,輸出數據類型是NVARCHAR2.
CREATE TABLE TEST(CHAR_COL CHAR(20),NCHAR_COL NCHAR(20));
INSERT INTO TEST VALUES('HI,N'BYE');
SELECT * FROM TEST;
返回一個包含數據類型代碼,字節長度等內部表示信息的VARCHAR2值.返回結果是當前數據庫字符集,數據類型按照下面規定的內部數據類型的編碼作爲一個數字進行返回:
代碼 數據類型
0 VARCHAR2
1 NUMBER
8 LONG
12 2003-10-17
23 RAW
24 LONG RAW
69 ROWID
96 CHAR
106 MSSLABEL
參數RETUEN_FORMAT指定按照下面的基數表示返回的數值.
RETURN_FORMAT RESULT
8 8進制
10 10進制
16 16進制
17 單字符表示
如果參數RETURN_FORMAT沒有指定,則按十進制表示返回.
如果參數START_POSITION和LENGTH被指定,則從START_POSITION開始的長爲LENGTH的字節將被返回,缺省是返回整數表示.
SELECT DUMP('ABC',1016) FROM TEST;
select dump(ename,8,3,2) 'example' from emp where name='ccbzzp';
返回一個空的LOB定位符,用在初始化LOB變量,或用在INSERT及UP2003-10-17聲明去初始化LOB列或將其屬性置爲空.
INSERT INTO TABLE1 VALUES(EMPTY_BLOB());
UP2003-10-17 TABLE1 SET CLOB_COL=EMPTY_BLOB();
返回一個BFILE定位符,相關的二進制LOB物理文件在服務器的文件系統上.目錄DIRECTORY是指在服務器的文件系統上實際搜索路徑全名的別名. FILENAME是指服務器的文件系統的文件名.
INSERT INTO FILE_TAB VALUES(BFILENAME('LOB_DIR','IMAGE1.GIF'));
GREATEST返回參數的最大值.
SELECT GREATEST('HARRY','HARRIOT','HAROLD') 'SAMPLE' FROM TABLE1;
LEAST返回參數的最小值.
SELECT LEAST('HARRY','HARRIOT','HAROLD') 'SAMPLE' FROM TABLE1;
返回一個NCHAR列的寬度.
SELECT NLS_CHARSET_DECL_LEN(200,NLS_CHARSET_ID('JA16EEFDFDF')) FROM TABLE1;
返回相應於NLS字符集名字的NLS字符集ID數.
SELECT NLS_CHARSET_D('JADFDFFDF') FROM TABLE1;
返回相應於ID數N的NLS字符集名稱.
SELECT NLS_CHARSET_NAME(2) FROM TABLE1;
若EXPR1是NULL,則返回EXPR2,否則返回EXPR1.
SELECT NAME,NVL(TO_CHAR(COMM),'NOT APPLICATION') FROM TABLE1;
返回唯一標識當前數據庫用戶的整數.
SELECT UID FROM TABLE1;
用VARCHAR2數據類型返回當前ORACLE用戶的名稱.
SELECT USER,UID FROM TABLE1;
返回當前的會話信息.
OPTION='ISDBA'若當前是DBA角色,則爲TRUE,否則FALSE.
OPTION='LANGUAGE'返回數據庫的字符集.
OPTION='SESSIONID'爲當前會話標識符.
OPTION='ENTRYID'返回可審計的會話標識符.
OPTION='LANG'返回會話語言名稱的ISO簡記.
OPTION='INSTANCE'返回當前的實例.
SELECT USERENV('LANGUAGE') FROM DUAL;
返回EXPR內部表示的字節數.
SELECT NAME,VSIZE(NAME) FROM TABLE1;
返回參數E的對象引用.
SELECT DEREF(C2) FROM TABLE1;
將參數R轉換爲16進制.
SELECT REFTOHEX(C2) FROM TABLE1;
通過把給定的鍵作爲主鍵來創建給定視圖對象中一行的引用.
CREATE TYPE T1 AS OBJECT(A NUMBER,B NUMBER);
CREATE TABLE TB1(C1 NUMBER,C2 NUMBER,PRIMARY KEY(C1,C2));
CREATE VIEW V1 OF T1 WITH OBJECT OID(A,B) AS SELECT * FROM TB1;
SELECT MAKE_REF(V1,1,3) FROM PUBS;
STDDEV給出一組行值的標準差.
SELECT STDDEV(SALARY) AS EXAMPLE FROM EMPLOYEE;
VARIANCE返回一組行中所有VALUE的方差.
SELECT VARIANCE(SALARY) AS EXAMPLE FROM EMPLOYEE;