在sql server中的like statement使用特殊字元,例如: "[]"
2021-02-13 14:55 Last Edited: 2021-03-29 11:00 2,496

假設在一個表裡,字串中帶有括號[],如果用like statement的話只要條件不帶有[],那就沒問題

比如這裡找"末期業績",都找得到正確結果,見第3行 公告及通告 - [末期業績]

可是如果我要用[末期業績]想找回上面第3行公告及通告 - [末期業績],問題就來了

回傳結果完全找不到公告及通告 - [末期業績]
這是因為sql的like是可以用regex方式找的,而這個括號剛好是regex中表示條件的方式,例如[0-9]表示任意0-9的單一字符
所以這裡Like '%[末期業績]%' 其實是在找 title_type包含任何符合[末、期、業、績]四個字的單一字符
仔細一看上面的結果都包含四字之中的任何一個字


所以要正確包含特殊字元"[ ]"時,要在like的後面escape,例如

 where title_type like '%[末期業績]%' escape ''

這樣就可以正確包含到特殊字元

 

Category: Coding
Tags: Sql