我数据库字符集是utf-8,用sql语句select like '王%'会出现其他姓,什么情况?是不是要用二进制?

解决方案 »

  1.   

    不需要用二进制,是字符集设计上的问题。 你可以先 set names 'gbk'; 试一下。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    你是在MySQL 下查询的还是在高级语言编的程序中查询的,我在后者中没有问题,(Windows下)
      

  3.   

    CREATE TABLE `person` (
       `id` int(8) NOT NULL auto_increment,
       `szs_gkh` varchar(20) NOT NULL,
       `szs_xm` varchar(10) NOT NULL,
       PRIMARY KEY  (`id`),
       KEY `szs_gkh` (`szs_gkh`),
       KEY `szs_xm` (`szs_xm`),
    ) ENGINE=InnoDB AUTO_INCREMENT=1067 DEFAULT CHARSET=utf8select szs_gkh,szs_xm from person where szs_xm like '王%'显示结果如下:
    01024 王苗法 
    013950 徐月贞
     013991 王华娟
     014066 王和茂
     0142 王志江 
     0157 王珠芬 
     。如果是select szs_gkh,szs_xm from person where szs_xm like '王苗%'
    那就正常
    01024 王苗法 
      

  4.   

    以上执行都是在PHP程序上执行非MYSQL数据库直接查询执行
      

  5.   

    like '王%'结果记录中包含姓‘汪’的,好像拼音倒确实一样的
      

  6.   

    CREATE TABLE `szs_person` (
       `id` int(8) NOT NULL auto_increment,
       `szs_gkh` varchar(20) NOT NULL,
       `szs_xm` varchar(10) NOT NULL,
       `szs_py` varchar(20) NOT NULL,
       `szs_yymz` varchar(20) NOT NULL,
       `szs_xb` enum('y','n') NOT NULL,
       `szs_date` date NOT NULL,
       `szs_xl` varchar(20) NOT NULL,
       `szs_byyx` varchar(20) NOT NULL,
       `szs_zy` varchar(50) NOT NULL,
       `szs_zc` varchar(50) NOT NULL,
       `szs_bm_id` int(4) NOT NULL,
       `szs_cj_id` int(4) NOT NULL,
       `szs_gw_id` varchar(50) NOT NULL,
       `szs_in_date` date NOT NULL,
       `szs_sfz` varchar(50) NOT NULL,
       `szs_hj` varchar(50) NOT NULL,
       `szs_dz` varchar(100) NOT NULL,
       `szs_sj` varchar(50) NOT NULL,
       `szs_bgsdh` varchar(20) NOT NULL,
       `szs_zd` varchar(20) NOT NULL,
       `szs_msn_qq` varchar(50) NOT NULL,
       `szs_email` varchar(50) NOT NULL,
       `szs_da` varchar(50) NOT NULL,
       `szs_zzmm` varchar(20) NOT NULL,
       `szs_jg` varchar(20) NOT NULL,
       `szs_jzzt` varchar(10) NOT NULL,
       `szs_due_date` date NOT NULL,
       `szs_out_date` date NOT NULL,
       `szs_jl` text NOT NULL,
       `szs_bz` text NOT NULL COMMENT '银行卡号',
       `szs_qudao` varchar(50) NOT NULL,
       `szs_jbgz` decimal(8,2) NOT NULL COMMENT '基本工资',
       `szs_zwgz` decimal(8,2) NOT NULL COMMENT '职位工资',
       `szs_jngz` decimal(8,2) NOT NULL COMMENT '技能工资',
       `szs_khgz` decimal(8,2) NOT NULL COMMENT '考核工资',
       `szs_xlgz` decimal(8,2) NOT NULL COMMENT '学历工资',
       `szs_syb` enum('y','n') NOT NULL COMMENT '失业保险',
       `szs_ylb` enum('y','n') NOT NULL COMMENT '养老保险',
       `szs_mdcb` enum('y','n') NOT NULL COMMENT '医疗保险',
       `szs_gsb` enum('y','n') NOT NULL COMMENT '工伤保险',
       `szs_syub` enum('y','n') NOT NULL COMMENT '生育保险',
       `szs_zjgz` decimal(8,2) NOT NULL COMMENT '总计工资',
       `szs_hth` varchar(50) NOT NULL COMMENT '合同号',
       `szs_grp_id` int(4) NOT NULL COMMENT '工作组',
       `szs_cq` set('1','2') NOT NULL COMMENT '1=上厂,2=下厂',
       `szs_gzstyle` set('1','2') NOT NULL COMMENT '1=固定,2=计件',
       PRIMARY KEY  (`id`),
       KEY `szs_gkh` (`szs_gkh`),
       KEY `szs_xm` (`szs_xm`),
       KEY `szs_py` (`szs_py`),
       KEY `szs_yymz` (`szs_yymz`),
       KEY `szs_bm_id` (`szs_bm_id`),
       KEY `szs_cj_id` (`szs_cj_id`),
       KEY `szs_date` (`szs_date`),
       KEY `szs_in_date` (`szs_in_date`),
       KEY `szs_due_date` (`szs_due_date`),
       KEY `szs_out_date` (`szs_out_date`),
       KEY `szs_sfz` (`szs_sfz`)
     ) ENGINE=InnoDB AUTO_INCREMENT=1067 DEFAULT CHARSET=utf8szs_xm varchar(10) utf8_general_ciSHOW VARIABLES LIKE 'char%' 执行结果如下:
    Variable_name Value
    character_set_client utf8
    character_set_connection utf8
    character_set_database utf8
    character_set_filesystem binary
    character_set_results utf8
    character_set_server utf8
    character_set_system utf8
    character_sets_dir C:\\AppServ\\MySQL\\share\\charsets\\sql = "select * from szs_person where szs_xm like '王%'";
    结果如下:
    01024 王苗法  
    013950 汪月贞
     013991 王华娟
     014066 王和茂
     0142 王志江  
     0157 王珠芬
     2236 陶香永
     。王和汪拼音相同,但是这个陶~~~,怎么回事