203. 如何得到字符串的第一個字符的ASCII值?
ASCII(CHAR)
SELECT ASCII('ABCDE') FROM DUAL;
結果: 65
204. 如何得到數值N指定的字符?
CHR(N)
SELECT CHR(68) FROM DUAL;
結果: D
205. 如何連接兩個字符串?
CONCAT(CHAR1,CHAR2)
SELECT CONCAT('ABC','DEFGH') FROM DUAL;
結果: 'ABCDEFGH'
206. 如何將列中的數值代替為字符串?
DECODE(CHAR,N1,CHAR1,N2,CHAR2...)
SELECT DECODE(DAY,1,'SUN',2,'MON') FROM DUAL;
207. INITCAP(CHAR)
將字符串CHAR的第一個字符為大寫,其餘為小寫.
SELECT INITCAP('ABCDE') FROM DUAL;
208. LENGTH(CHAR)
取一字符串CHAR的長度.
SELECT LENGTH('ABCDE') FROM DUAL;
209. LOWER(CHAR)
將字符串CHAR全部變為小寫.
SELECT LOWER('ABCDE') FROM DUAL;
210. LPAD(CHAR1,N,CHAR2)
用字符串CHAR2包括的字符左填CHAR1,使其長度為N.
SELECT LPAD('ABCDEFG',10'123') FROM DUAL;
結果: '123ABCDEFG'
211. LTRIM(CHAR,SET)
從字符串CHAR的左邊移去字符串SET中的字符,直到第一個不是SET中的字符為止.
SELECT ('CDEFG','CD') FROM DUAL;
結果: 'EFG'
212. NLS_INITCAP(CHAR)
取字符CHAR的第一個字符大寫,其餘字符為小寫.
SELECT NLS_INITCAP('ABCDE') FROM DUAL;
213. NLS_LOWER(CHAR)
將字符串CHAR包括的字符全部小寫.
SELECT NLS_LOWER('AAAA') FROM DUAL;
214. NLS_UPPER(CHAR)
將字符串CHAR包括的字符全部大寫.
SELECT NLS_UPPER('AAAA') FROM DUAL;
215. REPLACE(CHAR1,CHAR2,CHAR3)
用字符串CHAR3代替每一個列值為CHAR2的列,其結果放在CHAR1中.
SELECT REPLACE(EMP_NO,'123','456') FROM DUAL;
216. RPAD(CHAR1,N,CHAR2)
用字符串CHAR2右填字符串CHAR1,使其長度為N.
SELECT RPAD('234',8,'0') FROM DUAL;
217. RTRIM(CHAR,SET)
移去字符串CHAR右邊的字符串SET中的字符,直到最後一個不是SET中的字符為止.
SELECT RTRIM('ABCDE','DE') FROM DUAL;
218. SUBSTR(CHAR,M,N)
得到字符串CHAR從M處開始的N個字符. 雙字節字符,一個漢字為一個字符的.
SELECT SUBSTR('ABCDE',2,3) FROM DUAL;
219. SUBSTRB(CHAR,M,N)
得到字符串CHAR從M處開始的N個字符. 雙字節字符,一個漢字為二個字符的.
SELECT SUBSTRB('ABCDE',2,3) FROM DUAL;
220. TRANSLATE(CHAR1,CHAR2,CHAR3)
將CHAR1中的CHAR2的部分用CHAR3代替.
SELECT TRANSLATE('ABCDEFGH','DE','MN') FROM DUAL;
221. UPPER(CHAR)
將字符串CHAR全部為大寫.
222. ADD_MONTHS(D,N)
將N個月增加到D日 期.
SELECT ADD_MONTHS(SYSDATE,5) FROM DUAL;
223. LAST_DAY(D)
得到包含D日 期的月份的最後的一天的日 期.
SELECT LAST_DAY(SYSDATE) FROM DUAL;
224. MONTH_BETWEEN(D1,D2)
得到兩個日 期之間的月數.
SELECT MONTH_BETWEEN(D1,D2) FROM DUAL;
225. NEXT_DAY(D,CHAR)
得到比日 期D晚的由CHAR命名的第一個週日的日 期.
SELECT NEXT_DAY(TO_DATE('2003/09/20'),'SATDAY') FROM DUAL;
226. ROUNT(D,FMT)
得到按指定的模式FMT舍入到的最進的日 期.
SELECT ROUNT('2003/09/20',MONTH) FROM DUAL;
227. SYSDATE
得到當前系統的日 期和時間.
SELECT SYSDATE FROM DUAL;
228. TO_CHAR(D,FMT)
將日 期D轉換為FMT的字符串.
SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD') FROM DUAL;
229. TO_DATE(CHAR,FMT)
將字符串CHAR按FMT的格式轉換為日 期.
SELECT TO_DATE('2003/09/20','YYYY/MM/DD') FROM DUAL;
230. ABS(N)
得到N的絕對值.
SELECT ABS(-6) FROM DUAL;
231. CEIL(N)
得到大於或等於N的最大整數.
SELECT CEIL(5.6) FROM DUAL;
232. COS(N)
得到N的餘弦值.
SELECT COS(1) FROM DUAL;
233. SIN(N)
得到N的正弦值.
SELECT SIN(1) FROM DUAL;
234. COSH(N)
得到N的雙曲餘弦值.
SELECT COSH(1) FROM DUAL;
235. EXP(N)
得到N的E的N次冪.
SELECT EXP(1) FROM DUAL;
236. FLOOR(N)
得到小於或等於N的最小整數.
SELECT FLOOR(5.6) FROM DUAL;
237. LN(N)
得到N的自然對數.
SELECT LN(1) FROM DUAL;
238. LOG(M,N)
得到以M為底N的對數.
SELECT LOG(2,8) FROM DUAL;
239. MOD(M,N)
得到M除以N的餘數.
SELECT MOD(100,7) FROM DUAL;
240. POWER(M,N)
得到M的N冪.
SELECT POWER(4,3) FROM DUAL;
241. ROUND(N,M)
將N舍入到小數點後M位.
SELECT (78.87653,2) FROM DUAL;
242. SIGN(N)
當N<0時,得到-1;
當N>0時,得到1;
當N=0時,得到0;
SELECT SIGN(99) FROM DUAL;
243. SINH(N)
得到N的雙曲正弦值.
SELECT SINH(1) FROM DUAL;
244. SORT(N)
得到N的平方根,N>=0
SELECT SORT(9) FROM DUAL;
245. TAN(N)
得到N的正切值.
SELECT TAN(0) FROM DUAL;
246. TANH(N)
得到N的雙曲正切值.
SELECT TANH(0) FROM DUAL;
247. TRUNC(N,M)
得到在M位截斷的N的值.
SELECT TRUNC(7.7788,2) FROM DUAL;
248. COUNT()
計算滿足條件的記錄數.
SELECT COUNT(*) FROM TABLE1 WHERE COL1='AAA';
249. MAX()
對指定的列求最大值.
SELECT MAX(COL1) FROM TABLE1;
250. MIN()
對指定的列求最小值.
SELECT MIN(COL1) FROM TABLE1;
251. AVG()
對指定的列求平均值.
SELECT AVG(COL1) FROM TABLE1;
252. SUM()
計算列的和.
SELECT SUM(COL1) FROM DUAL;
253. TO_NUMBER(CHAR)
將字符轉換為數值.
SELECT TO_NUMBER('999') FROM DUAL;
188. /* NO_EXPAND*/
對於WHERE後面的OR 或者IN-LIST的查詢語句,NO_EXPAND將阻止其基於優化器對其進行擴展.例如:
SELECT /* NO_EXPAND*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';
189. /* NOWRITE*/
禁止對查詢塊的查詢重寫操作.
190. /* REWRITE*/
可以將視圖作爲參數.
191. /* MERGE(TABLE)*/
能夠對視圖的各個查詢進行相應的合併.例如:
SELECT /* MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO
FROM BSEMPMS A (SELET DPT_NO,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V
WHERE A.DPT_NO=V.DPT_NO
AND A.SAL>V.AVG_SAL;
192. /* NO_MERGE(TABLE)*/
對於有可合併的視圖不再合併.例如:
SELECT /* NO_MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO
FROM BSEMPMS A (SELET DPT_NO,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V
WHERE A.DPT_NO=V.DPT_NO
AND A.SAL>V.AVG_SAL;
193. /* ORDERED*/
根據表出現在FROM中的順序,ORDERED使ORACLE依此順序對其連接.例如:
SELECT /* ORDERED*/ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C
WHERE A.COL1=B.COL1 AND B.COL1=C.COL1;
194. /* USE_NL(TABLE)*/
將指定表與嵌套的連接的行源進行連接,並把指定表作爲內部表.例如:
SELECT /* ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS
WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
195. /* USE_MERGE(TABLE)*/
將指定的表與其他行源通過合併排序連接方式連接起來.例如:
SELECT /* USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS
WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
196. /* USE_HASH(TABLE)*/
將指定的表與其他行源通過哈希連接方式連接起來.例如:
SELECT /* USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS
WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
197. /* DRIVING_SITE(TABLE)*/
強制與ORACLE所選擇的位置不同的表進行查詢執行.例如:
SELECT /* DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS
WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;
198. /* LEADING(TABLE)*/
將指定的表作爲連接次序中的首表.
199. /* CACHE(TABLE)*/
當進行全表掃描時,CACHE提示能夠將表的檢索塊放置在緩衝區緩存中最近最少列表LRU的最近使用端。例如:
SELECT /* FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
200. /* NOCACHE(TABLE)*/
當進行全表掃描時,CACHE提示能夠將表的檢索塊放置在緩衝區緩存中最近最少列表LRU的最近使用端。例如:
SELECT /* FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
201. /* APPEND*/
直接插入到表的最後,可以提高速度.
insert /* append*/ into test1 select * from test4 ;
202. /* NOAPPEND*/
通過在插入語句生存期內停止並行模式來啓動常規插入.
insert /* noappend*/ into test1 select * from test4 ;
ORACLE內部函數篇
203. 如何得到字符串的第一個字符的ASCII值?
ASCII(CHAR)
SELECT ASCII('ABCDE') FROM DUAL;
結果: 65
204. 如何得到數值N指定的字符?
CHR(N)
SELECT CHR(68) FROM DUAL;
結果: D
205. 如何連接兩個字符串?
CONCAT(CHAR1,CHAR2)
SELECT CONCAT('ABC','DEFGH') FROM DUAL;
結果: 'ABCDEFGH'
206. 如何將列中的數值代替為字符串?
DECODE(CHAR,N1,CHAR1,N2,CHAR2...)
SELECT DECODE(DAY,1,'SUN',2,'MON') FROM DUAL;
207. INITCAP(CHAR)
將字符串CHAR的第一個字符為大寫,其餘為小寫.
SELECT INITCAP('ABCDE') FROM DUAL;
208. LENGTH(CHAR)
取一字符串CHAR的長度.
SELECT LENGTH('ABCDE') FROM DUAL;
209. LOWER(CHAR)
將字符串CHAR全部變為小寫.
SELECT LOWER('ABCDE') FROM DUAL;
210. LPAD(CHAR1,N,CHAR2)
用字符串CHAR2包括的字符左填CHAR1,使其長度為N.
SELECT LPAD('ABCDEFG',10'123') FROM DUAL;
結果: '123ABCDEFG'
211. LTRIM(CHAR,SET)
從字符串CHAR的左邊移去字符串SET中的字符,直到第一個不是SET中的字符為止.
SELECT ('CDEFG','CD') FROM DUAL;
結果: 'EFG'
212. NLS_INITCAP(CHAR)
取字符CHAR的第一個字符大寫,其餘字符為小寫.
SELECT NLS_INITCAP('ABCDE') FROM DUAL;
213. NLS_LOWER(CHAR)
將字符串CHAR包括的字符全部小寫.
SELECT NLS_LOWER('AAAA') FROM DUAL;
214. NLS_UPPER(CHAR)
將字符串CHAR包括的字符全部大寫.
SELECT NLS_UPPER('AAAA') FROM DUAL;
215. REPLACE(CHAR1,CHAR2,CHAR3)
用字符串CHAR3代替每一個列值為CHAR2的列,其結果放在CHAR1中.
SELECT REPLACE(EMP_NO,'123','456') FROM DUAL;
216. RPAD(CHAR1,N,CHAR2)
用字符串CHAR2右填字符串CHAR1,使其長度為N.
SELECT RPAD('234',8,'0') FROM DUAL;
217. RTRIM(CHAR,SET)
移去字符串CHAR右邊的字符串SET中的字符,直到最後一個不是SET中的字符為止.
SELECT RTRIM('ABCDE','DE') FROM DUAL;
218. SUBSTR(CHAR,M,N)
得到字符串CHAR從M處開始的N個字符. 雙字節字符,一個漢字為一個字符的.
SELECT SUBSTR('ABCDE',2,3) FROM DUAL;
219. SUBSTRB(CHAR,M,N)
得到字符串CHAR從M處開始的N個字符. 雙字節字符,一個漢字為二個字符的.
SELECT SUBSTRB('ABCDE',2,3) FROM DUAL;
220. TRANSLATE(CHAR1,CHAR2,CHAR3)
將CHAR1中的CHAR2的部分用CHAR3代替.
SELECT TRANSLATE('ABCDEFGH','DE','MN') FROM DUAL;
221. UPPER(CHAR)
將字符串CHAR全部為大寫.
222. ADD_MONTHS(D,N)
將N個月增加到D日 期.
SELECT ADD_MONTHS(SYSDATE,5) FROM DUAL;
223. LAST_DAY(D)
得到包含D日 期的月份的最後的一天的日 期.
SELECT LAST_DAY(SYSDATE) FROM DUAL;
224. MONTH_BETWEEN(D1,D2)
得到兩個日 期之間的月數.
SELECT MONTH_BETWEEN(D1,D2) FROM DUAL;
225. NEXT_DAY(D,CHAR)
得到比日 期D晚的由CHAR命名的第一個週日的日 期.
SELECT NEXT_DAY(TO_DATE('2003/09/20'),'SATDAY') FROM DUAL;