日期:2014-05-18  浏览次数:20668 次

求一个select语句
ecs_goods_type表的字段:
cat_id,cat_name,enabled,attr_group

一个简单的sql

select * from ecs_goods_type g where g.cat_name='打印机';

这样搜索结果为空..

首先表里是包含一条数据据有打印机这个字段的。。。

但是g.cat_name='shop'就可以搜到。。。

请问这个sql该如何写,
请不要只是说编码问题。。。
mysql数据库..


------解决方案--------------------
set name='gbk'
先试一下,字符集的原因。 论坛中搜索一下mySQL 字符集,会有很多结果。
------解决方案--------------------
如果真的是字符集编码的问题,那么你通过SQL存进去的‘打印机’,被乱码后存储起来,假设为‘@#¥%&*’,
那么你用你的SQL问查询的时候,你在SQL文里输入‘打印机’,系统同样会把它乱码成‘‘@#¥%&*’来数据库中存储的字段比较,所以,尽管是乱码,还是可以查询这条记录的。
所以不太可能是字符编码问题。

你看看你的数据库中cat_name字段的列类型,是什么?如果是VARCHAR(4)的话,就是你的列类型错误,如果不是这个类型,就是其他原因了。
CAHR()与varchar()区别是:CHAR()会自动截断,如果你定义了CHAR(10),你输入了‘abc’三个字母,那么你多定义的那7个字符位置会被截掉。
但若你定义的是ARCHAR(10)的话,你输入了‘abc’,数据库仍然会用10个位置来存储这个‘abc’,只不过现在成了‘abc ’,即,后面有7个空格。
所以,你看看你的表中是‘打印机’还是‘打印机 ’?
用select * from ecs_goods_type g where g.cat_name like '打印机%';查询试试。 

------解决方案--------------------
除了楼上说的原因,再看看字符前后是否有空格

SQL code
select * from ecs_goods_type g where trim(g.cat_name)='打印机';

------解决方案--------------------
探讨
感受谢诸位的热情,但以上的方法都不行啊。。。
补充:
我用eclipse表中所有的内容,表中中文字段完好无缺的在那里显示着。。。
表中无乱码现象
我查了些资料,但还是不行啊。。