現象:
有乙個表 action_conf,資料如下:
如果想獲取以exp_site_10_開頭的en_name的記錄,sql語句該如何寫?
so easy!
select en_name from action_conf where en_name like 'exp_site_10_%'
很自信的在idb中執行了這條sql,就會發現結果並不是所預期的。
你會發現,執行上面的sql會把所有以exp_site_10開頭的記錄都列出來了。
原因:
其實,這都是sql中的萬用字元在作怪。在sql中,下劃線_是乙個萬用字元,能匹配任何單一字元。
既然直到原因,修改sql就很容易了。正確的sql應該是:
select en_name from action_conf where en_name like 'exp\_site\_10\_%'
在萬用字元前面增加轉移字元後,mysql就會把萬用字元視為普通字元。
高階:
萬用字元整理:
萬用字元 說明
% 替代乙個或多個字元
_ 僅替代乙個字元
[charlist] 字元列中的任何單一字元
[^charlist]或[!charlist] 不在字元列中的任何單一字元
sql驅動 德 sql語句中的萬用字元
一 簡介 mysql中常用的萬用字元有 萬用字元解釋 匹配乙個或多個字元 匹配乙個字元 string 匹配string中任意乙個字元 string 不匹配string中任意乙個字元 string 不匹配string中任意乙個字元 二 的使用 在mysql的查詢或是授權的時候,我們通常會用到mysql...
關於sql語句中limit的坑
在使用分頁查詢時遇到了這樣這個思維錯誤,如下 string sql select from topic where c id and delete 0 order by update time desc limit 這裡同時有條件和限制,我本以為先條件查詢,也就是先執行了 where c id an...
MySql的like語句中的萬用字元
mysql的like語句中的萬用字元 百分號 下劃線和escape 代表任意多個字元 sql www.2cto.com select from user where username like huxiao select from user where username like huxiao se...