以中文作为查询条件时结果为空的原因以及两个MySql小知识点
一、以中文作为查询条件时结果为空集
今天同学跑来问我,说他用中文作为查询条件时,结果为空集,问是怎么回事。
原因剖析:
我们知道,MySQL在进行查询时,查询命令与查询条件是大小写不敏感的,那么为了达到这种效果,MySQL本身必然会在执行SQL语句之前对语句进行大小写转换处理。这种处理对于单字节的ASCII字符自然没问题,但对于使用UTF-8或GB2312编码的多字节汉子,则可能是毁灭性的灾难。
解决方法:
对于数据表中所有可能包含中文的字段,我们都加上"binary"属性。这样的话,在比较的时候就会按照二进制数值进行,而非按照二进制数所要表示的含义进行比较,也就不会在比较前进行大小写转化了。
二、最近用到的两个关于MySql的小知识点
2.1 MySql里char与varchar的区别
参考自:http://www.jb51.net/article/23575.htm
http://zhidao.baidu.com/question/204838851.html
char与varchar都是用来存储字符串的,只是他们的保存方式不一样罢了