mysql脫逸字元

今天從DB查東西時,發生一些問題
Table的資料如下:
sn name
1 abc
2 a_b
3 a_c

我想查出a_開頭的name,像a_b跟a_c,所以sql下了:
Select * from name_table where name like LIKE 'a_%'
結果它連abc都出來了,原來_在sql表示的是萬用字元
mysql中的2個萬用字元,與 LIKE 關鍵字一起使用的
參考:http://www.1keydata.com/tw/sql/sql-wildcard.html
%(百分比符號) 代表零個、一個、或數個字母
_(底線) 代表剛好一個字母

解決方式便是使用脫逸字元 \ ,在\後的第一個字元會脫逸,修正語法如下:
Select * from name_table where name like LIKE 'a\_%'
另一個解決方法可使用 ESCAPE ,範例是使用\\,表示在\\後的第一個字元會脫逸:
SELECT * FROM name_table where name like 'a\\_%' ESCAPE '\\'
ESCAPE 範例2,使用z,表示在z後的第一個字元會脫逸
SELECT * FROM name_table where name like 'az_%' ESCAPE 'z'
Category:

0 意見: