最近在檢測天氣預報15天查詢**(時的url時,發現頁面中有很些404頁,分析發現,是請求位址的能引數中多了下劃線「_」,而rewrite規則中並沒有配這樣的規則,資料庫表中出現「_」,並不多,想找出來把下劃線去掉,按照正常的查詢,結果返回記錄不正常,找了下資料,原來下劃線在like中有著特殊的含義,它表示匹配任意乙個字元。因此在查詢包含下劃線內容的時候需要「特殊關照」一下。
以下是分析及解決辦法:
使用like語句的錯誤查詢
mysql> select * from t where x like '%_%';
返回全部的記錄,不是想要的結果!
為什麼錯誤?
因為在like語句中的下劃線的含義是「任意乙個字元」,類似「%」代表匹配任意多個字元的。
4.正確的查詢方法
能想到的有如下兩種方法。
1)第一種方法使用escape轉義
mysql> select * from t where x like '%\_%' escape '\';
返回包含有"_"的記錄,正確
escape的內容可以任意,只要保證前後一致即可。
mysql> select * from t where x like '%|_%' escape '|';
返回包含有"_"的記錄,正確
mysql> select * from t where x like '%*_%' escape '*';
返回包含有"_"的記錄,正確
2)使用instr函式輔助判斷
使用instr函式判斷欄位中是否包含「_」,如果包含返回值是非零的,如果不包含則返回值是零。
mysql> select * from t where instr(x,'_')!=0;
SQL搜尋下劃線,like中不能匹配下劃線的問題
使用like語句的錯誤查詢 mysql select from t where x like 返回全部的記錄,不是想要的結果!為什麼錯誤?因為在like語句中的下劃線的含義是 任意乙個字元 類似 代表匹配任意多個字元的。4.正確的查詢方法 能想到的有如下兩種方法。1 第一種方法使用escape轉義 ...
SQL搜尋下劃線,like中不能匹配下劃線的問題
最近在檢測天氣預報15天查詢 時的url時,發現頁面中有很些404頁,分析發現,是請求位址的能引數中多了下劃線 而rewrite規則中並沒有配這樣的規則,資料庫表中出現 並不多,想找出來把下劃線去掉,按照正常的查詢,結果返回記錄不正常,找了下資料,原來下劃線在like中有著特殊的含義,它表示匹配任意...
Python中單下劃線和雙下劃線
python中存在一些特殊的方法,有些方法以雙下劃線 開頭和結尾,它們是python的魔法函式,比如 init 和 str 等等。不用要這種方式命名自己的變數或者函式。class a def init self,text self.text text def str self return self...