小弟新学MySQL,遇到问题查了好久也没找出问题,跪求各路大神相助!
问题:我用load data 函数将csv文件(已经转换为utf8-csv编码格式)导入到我新建的一张表mytable里,然后select * from mytable可以查询到所有行。但按照字段查询 select * from mytable where col.name=' xxx ' 时就出现了问题:如果col.name字段里的data是数值型或是文字型,该查询语句会返回符合条件的记录;如果col.name字段里的data是英文字符串,就没有记录返回,尽管表里
是存在符合查询条件的行的。
原因:小弟网上查了很久,很多类似问题都是不能按照data为中文的字段进行查询,可我的却是不能按照data为英文的字段进行查询,实在头疼。是不是csv文件的data编码格式没有完全转换为utf8格式,导致新表对应字段与data编码格式不一致?用show variables like 'character_set_database';
查看了mysql数据库及表编码格式 都是utf8格式,不知道问题在哪,求高人解答,谢谢!!Variable_name            |Value                                                   |
-------------------------|--------------------------------------------------------|
character_set_client     |utf8                                                    |
character_set_connection |utf8                                                    |
character_set_database   |utf8                                                    |
character_set_filesystem |binary                                                  |
character_set_results    |                                                        |
character_set_server     |utf8                                                    |
character_set_system     |utf8                                                    |
character_sets_dir       |C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |

解决方案 »

  1.   

     谢谢回复 我的条件字段是varchar(255)定义的  这列字段的data都是英文字符串  我用通配符检查过也不是空格的问题 就是不能按照这种数据都是英文字符串的字段查询 而数据类型是数值型 或者 汉字的都可以
      

  2.   

    大哥,我刚刚又试了下通配符,发现确实是空格的问题 。
    但是我不明白csv读进新表后英文数据后面为什么会产生空格?是原来的csv表里就有空格还是读取的过程中在新表中数据后面产生的空格?
      

  3.   

    按理说VARCHAR字段类型的保存数据时数据库不会自动补空格的, 所以就是还是在存储的时候数据本身就含有空格。
    可能是你csv文件在编码转换的过程中出的问题,简单的测试一下,就是load出文件后直接导入到新表中(不考虑中文字符),然后看看纯英文字段保存是否正常。