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
