匹配中文的问题,是mysql的bug。这个是我知道的。如果你想避免匹配出其他,请将该字段设置属性为binary(二进制)。英文的不详,推测也可以使用这种方法解决。

解决方案 »

  1.   

    也不行!试过了,是不是msyql版本问题》?
    mysql-4.0.16
      

  2.   

    查看一下你的mysql的配置文件my.ini[mysqld]
    basedir=D:/usr/local/mysql
    #bind-address=127.0.0.1
    datadir=D:/usr/local/mysql/data
    default-character-set=gb2312  #这里是采用gb2312编码
      

  3.   

    试一下mysql的正则表达式函数,必要时把中文拆成两个16进制字符
      

  4.   

    使用mysql4.1以上版本。设置相应的characher set。
    一切都留给mysql就行了
      

  5.   

    select * from cy where LOCATE('中',name) > 0 limit 0,200,这样也不行!
    select * from cy where name like binary "%中%"也不行!
    my.ini里编码设置成
    default-character-set=gb2312 或 gbk都不行!装了mysql5.0,乱码搞不定!
    在my.ini设置了编码为gbk,这样phpmyadmin里显示的不是乱码,但是我以前的网站数据显示的就乱码了,如果my.ini编码按默认的,那么phpmyadmin里显示为乱码,网站显示正常!这个问题又如何解决!
      

  6.   

    在my.ini设置了编码为gbk,这样phpmyadmin里显示的不是乱码,但是我以前的网站数据显示的就乱码了--------------------------
    连接后
    set names gbk
      

  7.   

    正则!
    select * from cy where name REGEXP '中' limit 0,200
    这样也会把一些不相关的搜索出来,如"粗心大意"都匹配出来了,结果跟用前2个方法一样!
      

  8.   

    如果把关键字"中"改成"爱",那么查到的结果就完全正确了!!!
    select * from cy where name REGEXP '爱' limit 0,200 #完全正确!!!总结一下:用“爱”做关键字的时候查出来完全正确,用“中”做关键字的时候查出来有少部分错误!
    为何?难道是mysql对中文支持不好无法解决这个头痛的问题吗?
      

  9.   

    是因为碰到了一个字的后半字和后一个字的前半个字组合成的汉字和你要查的一样。
    如果正好你的数据里没有碰到‘爱’的前一半和后一半碰到一起的情况,就不会出错。
    这不是mysql的问题,是gb码本身造成的。mysql4.1以上设置字符集后没有这个问题。
    使用utf8编码也不会有这个问题。
      

  10.   

    binary(二进制)作为学术探讨,你的问题或许有意义。但绝无实际意义!
    比如“的”可以出现在所有的文章中,那么搜索的结果将是全部记录,那还搜索个啥?
    英文字母就更是如此了