在MySQL中使用通配符时应该注意的问题 |
本文标签:MySQL 现象: 有一个表 action_conf,数据如下: 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] 不在字符列中的任何单一字符 |