设置chinese字段属性为binary或:select * from sinodictionary where Chinese= binary '我';

解决方案 »

  1.   

    谢谢随风的回答,
    我还有一点疑问,为什么会出现这样的问题呢?为什么加上binary就可以解决呢?起初我认为是Chinese字段里长度为2的都会被select出来,
    但我用下面的语句测试
    select count(*) from `yiba`.`sinodictionary` where length(Chinese)=2;

    select count(*) from `yiba`.`sinodictionary` where Chinese='我';
    得到的结果相差很大,证明猜测是错的,后来我认为可能是编码的原因,
    汉字:    我
    GBK:     CED2
    UNICODE   6211
    王码86    TRNT
    拼音      WO汉字:    握
    GBK:     CED5
    UNICODE   63E1
    王码86    RNGF
    拼音      WO OU汉字:    煲
    GBK:     ECD2
    UNICODE   7172
    王码86    WKSO
    拼音      BAO 
    **************
    汉字:    呵
    GBK:     BAC7
    UNICODE   5475
    王码86    KSKG
    拼音      KE A 其中:“我”、“握”、“煲”是会一起出现的,“呵”不会出现。
    我观察了它们的编码,发现没有理由语句
    select * from sinodictionary where Chinese='我';
    会把“握”、“煲”这些字都一起显示出来!大家帮忙在看看!
      

  2.   

    MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集(不是你上面列的字符集),因此在比较过程中中文编码字符大小写转换造成了这种现象。
    如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。加binary属性使之作为二进制比较,这个是能具体区分的