前几天在做一个联表查询的时候,发现结果集出现了除主键id不同其它字段完全相同的记录。开始时好生奇怪,经过排查才发现居然是因为Mysql在查询时对大小写不敏感。比如说下面这个例子,两个sql的结果是完全一样的:
<pre name="code" class="sql"><pre name="code" class="sql">select * from table where col = 'CoCa'
select * from table where col = 'coca'
瞬间感觉长知识了。不过发现了这个问题,就要解决它,不然查出两条完全一样的记录可不行。上网搜了一圈,除了修改mysql配置的做法外。有一个比较简便的做法是在列名前添加binary关键字。
select * from table where binary col = 'CoCa'
这样在查询中就能大小写敏感了。
在联表查询中就像下面一样使用binary,就能解决我的问题。
select * from table1 as a join table2 as b on binary a.col = b.col
perfect!