關於sql中like操作符的使用及效率優化問題整理

2021-09-05 01:38:49 字數 2234 閱讀 1437

like 操作符用於在 where 子句中搜尋列中的指定模式。

基本語法

一:% 表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請使用兩個百分號(%%)表示

1.從上面的 「persons」 表中選取居住在以 「n」 開始的城市裡的人:

select * from persons where city like 『n%』

2.從 「persons」 表中選取居住在以 「g」 結尾的城市裡的人:

select * from persons where city like 『%g』

3.從 「persons」 表中選取居住在包含 「lon」 的城市裡的人:

select * from persons where city like 『%lon%』

4.從 「persons」 表中選取居住在不包含 「lon」 的城市裡的人:

select * from persons where city not like 『%lon%』

二 :_ 表示任意單個字元。匹配單個任意字元,它常用來限制表示式的字元長度語句:

例如 select * from [user] where u_name like 『三』

只找出「唐三藏」,這樣u_name為三個字且中間乙個字是「三」的;

三:[ ] 表示括號內所列字元中的乙個(類似正規表示式)。指定乙個字元、字串或範圍,要求所匹配物件為它們中的任乙個。

例如 select * from [user] where u_name like 『[張李王]三』

將找出「張三」、「李三」、「王三」(而不是「張李王三」);

四:[^ ] 表示不在括號所列之內的單個字元。其取值和 相同,但它要求所匹配物件為指定字元以外的任乙個字元。

例如 select * from [user] where u_name like 『[^張李王]三』

將找出不姓「張」、「李」、「王」的「趙三」、「孫三」等;

五、查詢內容包含萬用字元時

由於萬用字元的緣故,導致我們查詢特殊字元「%」、「」、「[」的語句無法正常實現,而把特殊字元用「[ ]」括起便可正常查詢。據此我們寫出以下函式:

function sqlencode(str)

str=replace(str,"[","[") '此句一定要在最前

str=replace(str,"","[_]")

str=replace(str,"%","[%]")

sqlencode=str

end function

備註:在查詢前將待查字串先經該函式處理即可,並且在網頁上連線資料庫用到這類的查詢語句時侯要注意:

例如 select * from user where name like 『老[^1-4]』

上面 《』》老[^1-4]《』》是要有單引號的!

select * fromcomponent_datawhere creation_date like 『2012%』;(索引起作用)

優於

select * fromcomponent_datawhere creation_date like 『%2012%』;(索引不起作用)

函式的格式 (俗稱:字元查詢函式)

格式一:instr( string1, string2 ) / instr(源字串, 目標字串)

select instr(『helloworld』,『lo』) from dual; --返回結果:4 即:在「lo」中,「l」開始出現的位置

select id, name from users where instr(id, 『101』) > 0;

效果等價於

select id, name from users where id like 『%101%』

效率

select * from gt_alarm where alarm_date like 『%2016/4/3%』; --11s

select * from gt_alarm where instr(alarm_date,『2016/4/3』)>0; --9s

時間上的差異很明顯,instr在一瞬間執行完成,因為這個是查詢的字段,而非走全表掃瞄,看來,oracle 內部函式效率還是高些。

LIKE操作符 謂詞

like操作符 用來進行模糊查詢。當你不知道乙個具體值 可以使用like操作符進行模糊查詢!select from 表名 where a like a a a b a b 這個是防止b後面有空格 所以可能檢索不到,在b後再加上 select from products where prod name...

MySQL基礎之 LIKE操作符

like操作符 作用 用於在where子句中搜尋列中的指定模式。語法 select column name from table name where column name like pattern 現在我們建立乙個表 mysql select from information id name a...

關於C C 中的點操作符和箭頭操作符

ps 話說以前竟然一直沒有關注到這個問題啊。不應該啊。今天查了點資料,加上自己寫code的體會,說下一下,作為記錄吧。先概括一下 點操作符 用來引用普通物件。箭頭操作符 用來引用指標物件。舉例子說明一下 比如,我有乙個物件darkray。那麼我可以通過 來呼叫darkray類中中的成員變數。但是如果...