oracle中instr與like的區別


instr是oracle的一個內置函數,用法如下:

select instr('123456as','3') from dual

上面的意思是返回字符串'123456as'中'3'所在的位置,如上所示,最終返回的結果是3

 

而like只是作為一個判斷條件來篩選數據。

select * from user where instr(username,'zhangsan')>0

上面的意思是查username中存在zhangsan的數據與下面的語句是一樣的

select * from user where username like '%zhangsan%'

 

 

效率問題:

建議使用instr的寫法

<1> instr>0 和like、instr=0 和not like 一般來說查詢的結果相同(不考慮特殊字符) 
<2> instr是一個函數,可以建立函數索引,如果過濾的條件有索引,那么instr就可以提高性能。 
<3> like查詢時,以'%'開頭,列所加的索引是不起作用的。 
<4> 在沒有索引的前提下,當數據量比較大時,instr要比like效率高。  

 

 

更多用法參考:https://blog.csdn.net/lanmuhhh2015/article/details/79216804


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM