求教:
在mysql5.1下,有没有与 mysql3.2下的  “varchar(200) BINARY” 等价的数据类型?在 “varchar(200) BINARY”这种类型字段中存的“中文” 可以被用select * from t1 where c1='中文'语句显示,但用
select hex(c1) from t1 where c1='中文'时 hex(c1)=0 这是怎么回事呢? 

解决方案 »

  1.   

    MySQL 5.1 中使用的是字符集设置。关键看你的字符集是什么?
    按下贴中的方法检查一下当前的字符集设置。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

      或者提供一个 create table t1 语句,然后贴出你的 show variables ... 这样别人可以在自己机器上模拟你的问题以找出根源,而不是猜着找问题所在。
      

  3.   

    谢谢版主回复,上次的问题显示中文的问题是解决了,但是还有别的问题,但是我想分步搞清楚原因是什么,这个问题可能我问的不太准确,因为我也不知道是不是数据类型的问题。另外我觉得这事跟表没什么关系,具体情况如下:
    1,我使用的是n8连接mysql.
    2,连接mysql5.1 然后建查询 select hex('中尉') 返回 E4B8ADE5B089 (这个操作跟表和数据类型没有关系吧?)
    3,连接mysql3.2 然后建查询 select hex('中尉') 返回 04,同样,上次所说的补码中文的问题
       连接mysql5.1 然后建查询 char(-76,-13,-51,-73) 返回 大头
       连接mysql3.2 然后建查询 char(-76,-13,-51,-73) 返回 ????我只是想在5.1下也能实现如同3.2下一样的返回结果。
      

  4.   

    2,连接mysql5.1 然后建查询 select hex('中尉') 返回 E4B8ADE5B089 (这个操作跟表和数据类型没有关系吧?)
    这个和你的当前character_set_client的字符集有关。 首先MYSQL要你送进来的这个  '中尉' 是什么字符集? 结果是UTF8, '中尉' UTF8 的HEX自然是 E4B8ADE5B089 其它问题也类似,建议你还是先阅读一下手册中关于字符集部分的介绍,否则一些基本概念不清晰的情况下,很难解释。