Oracle模糊查詢優化

2021-07-31 03:53:22 字數 854 閱讀 1534

這是第一篇關於技術的。

幹這行一年了 ,以前就是懶 不愛學習,工作中用不到的。。基本都不怎麼會

隨意的一張表裡做一次 select * from  like 的查詢,舉個例子吧。

user表裡 username欄位有 三行資料

uesename

'abcdef'

'_bcdef'

'cbcdef'

要求模糊查詢出 _bc的username值

select  *  from uesr where username like  『_bc』 查詢出來的結果並不理想

因為在條件裡的_bc被oracle當做了萬用字元 

(like 字句中  有兩個萬用字元,"%"代替乙個或者多個字元,「_"代替乙個或者多個字元)

所以查詢出的資料 是會把上述三條資料都會查詢出

那這裡 「_」 下劃線被當做了萬用字元,

可以使用「\」轉義字元

所以這樣寫

select  *  from uesr where username like  『\_bc』 escape '\';

就可以查詢出想要的資料了

escape 把「\」標識為轉義字元,而"\"把"_"轉義為字元,而非其原意(萬用字元)。

那如果  上列的第二條資料時這樣的呢?

"_\bcdefg"

如果還是按照上述的查詢  

會出現轉衣服之後字元確實或非法的錯(這個自己實現就好)

做開發時間長了之後就會知道  雙寫轉義字元就可以實現了

select  *  from uesr where username like  『_\\bc』 escape '\';

字串出現"%"  按上面的處理方法就可以實現!

Oracle 模糊查詢優化

模糊查詢是資料庫查詢中經常用到的,一般常用的格式如下 1 字段 like 關鍵字 字段包含 關鍵字 的記錄 即使在目標字段建立索引也不會走索引,速度最慢 2 字段 like 關鍵字 欄位以 關鍵字 開始的記錄 可以使用到在目標字段建立的公升序索引 3 字段 like 關鍵字 欄位以 關鍵字 結束的記...

Oracle 模糊查詢

在where子句中,可以對datetime char varchar欄位型別的列用like子句配合萬用字元選取那些 很像.的資料記錄,以下是可使用的萬用字元 零或者多個字元 單一任何字元 下劃線 特殊字元 在某一範圍內的字元,如 0 9 或者 aeth 不在某範圍內的字元,如 0 9 或者 aeth...

oracle 模糊查詢

oracle10g以上支援正規表示式的函式主要有下面四個 1,regexp like 與like的功能相似 2,regexp instr 與instr的功能相似 3,regexp substr 與substr的功能相似 4,regexp replace 與replace的功能相似 posix 正規表...