2012-06-20 114 views
3

我有一個MySQL查詢爲什麼此查詢返回太多結果?

Select * from tbl_schoolphotos where Filename like 
     'glasshouse_1_%' order by DateTaken 

我想匹配

  • glasshouse_1_20122204123455
  • glasshouse_1_20122206102415

但不

  • glasshouse_18_20122206102415

但它的所有三個匹配。有人知道爲什麼_在mysql中有特殊含義嗎?

+3

是的,下劃線是匹配單個字符的通配符。您可以使用\(反斜槓)將其轉義出來 – Andrew

回答

4

該請求必須避免下劃線才能正常工作。

Select * from tbl_schoolphotos where Filename like 
      'glasshouse\_1\_%' order by DateTaken 

信息:LIKE和NOT LIKE有兩個搜索幫助器symobls。查找一個字符的下劃線_字符以及查找零個或多個字符的百分比%字符。

而你不想讓下劃線成爲搜索幫手,你必須用\(如\_)將其轉義。

5

因爲下劃線匹配任何單個字符

+0

您可以用'\\'嘗試轉義它,如'glasshouse \\ _ 1 \\ _%' – ESG

3

是,_在MySQL LIKE匹配一個字符。

相關問題