SQL搜尋下劃線,like中不能匹配下劃線的問題

2021-09-01 10:33:59 字數 854 閱讀 4401

最近在檢測天氣預報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...