注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

zjc的博客

技术积累

 
 
 

日志

 
 

Oracle常见问题3  

2008-12-25 16:21:08|  分类: oracle管理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  173. /* ALL_ROWS*/

  表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:

  SELECT /* ALL _ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP';

  174. /* FIRST_ROWS*/

  表明对语句块选择基于开销的优化方法,并获得最佳响应时 间,使资源消耗最小化.例如:

  SELECT /* FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP';

  175. /* CHOOSE*/

  表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法;例如:

  SELECT /* CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS

  WHERE EMP_NO='CCBZZP';

  176. /* RULE*/

  表明对语句块选择基于规则的优化方法.例如:

  SELECT /* RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS

  WHERE EMP_NO='CCBZZP';

  177. /* FULL(TABLE)*/

  表明对表选择全局扫描的方法.例如:

  SELECT /* FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A

  WHERE EMP_NO='CCBZZP';

  178. /* ROWID(TABLE)*/

  提示明确表明对指定表根据ROWID进行访问.例如:

  SELECT /* ROWID(BSEMPMS)*/ * FROM BSEMPMS

  WHERE ROWID>='AAAAAAAAAAAAAA'

  AND EMP_NO='CCBZZP';

  179. /* CLUSTER(TABLE)*/

  提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效.例如:

  SELECT /* CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS

  WHERE DPT_NO='TEC304'

  AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

  180. /* INDEX(TABLE INDEX_NAME)*/

  表明对表选择索引的扫描方法.例如:

  SELECT /* INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */

  FROM BSEMPMS WHERE SEX='M';

  181. /* INDEX_ASC(TABLE INDEX_NAME)*/

  表明对表选择索引升序的扫描方法.例如:

  SELECT /* INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS

  WHERE DPT_NO='CCBZZP';

  182. /* INDEX_COMBINE*/

  为指定表选择位图访问路经,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式.例如:

  SELECT /* INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS

  WHERE SAL<5000000 AND HIREDATE<SYSDATE;

  183. /* INDEX_JOIN(TABLE INDEX_NAME)*/

  提示明确命令优化器使用索引作为访问路径.例如:

  SELECT /* INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE

  FROM BSEMPMS WHERE SAL<60000;

  184. /* INDEX_DESC(TABLE INDEX_NAME)*/

  表明对表选择索引降序的扫描方法.例如:

  SELECT /* INDEX_DESC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS

  WHERE DPT_NO='CCBZZP';

  185. /* INDEX_FFS(TABLE INDEX_NAME)*/

  对指定的表执行快速全索引扫描,而不是全表扫描的办法.例如:

  SELECT /* INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305';

  186. /* ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/

  提示明确进行执行规划的选择,将几个单列索引的扫描合起来.例如:

  SELECT /* INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS

  WHERE EMP_NO='CCBZZP' AND DPT_NO='TDC306';

  187. /* USE_CONCAT*/

  对查询中的WHERE后面的OR条件进行转换为UNION ALL的组合查询.例如:

  SELECT /* USE_CONCAT*/ * FROM BSEMPMS

  WHERE DPT_NO='TDC506' AND SEX='M';

  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 ;

  本讲主要讲的是SQL语句的优化方法! 主要基于ORACLE9I的.

  173. /* ALL_ROWS*/

  表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:

  SELECT /* ALL _ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP';

  174. /* FIRST_ROWS*/

  表明对语句块选择基于开销的优化方法,并获得最佳响应时 间,使资源消耗最小化.例如:

  SELECT /* FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='CCBZZP';

  175. /* CHOOSE*/

  表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法;例如:

  SELECT /* CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS

  WHERE EMP_NO='CCBZZP';

  176. /* RULE*/

  表明对语句块选择基于规则的优化方法.例如:

  SELECT /* RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS

  WHERE EMP_NO='CCBZZP';

  177. /* FULL(TABLE)*/

  表明对表选择全局扫描的方法.例如:

  SELECT /* FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A

  WHERE EMP_NO='CCBZZP';

  178. /* ROWID(TABLE)*/

  提示明确表明对指定表根据ROWID进行访问.例如:

  SELECT /* ROWID(BSEMPMS)*/ * FROM BSEMPMS

  WHERE ROWID>='AAAAAAAAAAAAAA'

  AND EMP_NO='CCBZZP';

  179. /* CLUSTER(TABLE)*/

  提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效.例如:

  SELECT /* CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS

  WHERE DPT_NO='TEC304'

  AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

  180. /* INDEX(TABLE INDEX_NAME)*/

  表明对表选择索引的扫描方法.例如:

  SELECT /* INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */

  FROM BSEMPMS WHERE SEX='M';

  181. /* INDEX_ASC(TABLE INDEX_NAME)*/

  表明对表选择索引升序的扫描方法.例如:

  SELECT /* INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS

  WHERE DPT_NO='CCBZZP';

  182. /* INDEX_COMBINE*/

  为指定表选择位图访问路经,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式.例如:

  SELECT /* INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS

  WHERE SAL<5000000 AND HIREDATE<SYSDATE;

  183. /* INDEX_JOIN(TABLE INDEX_NAME)*/

  提示明确命令优化器使用索引作为访问路径.例如:

  SELECT /* INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE

  FROM BSEMPMS WHERE SAL<60000;

  184. /* INDEX_DESC(TABLE INDEX_NAME)*/

  表明对表选择索引降序的扫描方法.例如:

  SELECT /* INDEX_DESC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS

  WHERE DPT_NO='CCBZZP';

  185. /* INDEX_FFS(TABLE INDEX_NAME)*/

  对指定的表执行快速全索引扫描,而不是全表扫描的办法.例如:

  SELECT /* INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305';

  186. /* ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/

  提示明确进行执行规划的选择,将几个单列索引的扫描合起来.例如:

  SELECT /* INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS

  WHERE EMP_NO='CCBZZP' AND DPT_NO='TDC306';

  187. /* USE_CONCAT*/

  对查询中的WHERE后面的OR条件进行转换为UNION ALL的组合查询.例如:

  SELECT /* USE_CONCAT*/ * FROM BSEMPMS

  WHERE DPT_NO='TDC506' AND SEX='M'; 

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;

  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;

  评论这张
 
阅读(346)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017