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 '\\'
SELECT * FROM name_table where name like 'az_%' ESCAPE 'z'