程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle Like查詢,OracleLike

Oracle Like查詢,OracleLike

編輯:Oracle教程

Oracle Like查詢,OracleLike


查詢方式:LIKE '%xx%'

普通: SELECT * FROM TABLE T WHERE T.COLUNM LIKE '%xx%'

優化:使用 INSTR

SELECT * FROM TABLE T WHERE INSTR(T.COLUNM, xx)>0

在執行的時候,執行計劃顯示,消耗值,io值,cpu值均非常大,原因是like後面前模糊查詢導致索引失效,進行全表掃描。

 


 

1. 盡量不要使用 like '%%'

 

2. 對於 like '%' (不以 % 開頭),Oracle 可以應用 colunm上的index

 

3. 對於 like '%…' 的 (不以 % 結尾),可以利用reverse + function index 的形式,變化成 like '%'

 

4. 非用like'%%'不可時,使用Oracle內部函數:INSTR()解決。

 


 

附錄:

instr(string1 , string2[,start_position[,nth_appearence]])

 

string1:要在此字符串中查找。

 

string2:要在string1中查找的字符串。

 

start_position:從string1開始查找的位置。可選,默認為1,正數時,從左到右檢索,負數時,從右到左檢索。

 

nth_appearence:查找第幾次出現string2。可選,默認為1,不能為負。

 

注:如果沒有查找到,返回0。

故,上述例子中,

INSTR(T.COLUNM, 'xx')>0,是LIKE;INSTR(T.COLUNM, 'xx')=0,則是NOT LIKE。

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved