mysql中文为啥查不出来

时间:2021-11-27 08:42:10
记录ID 客户编号 收银时间 销售金额 销售类型
00023351 010006 2009-09-27 20:10 58.00 特价
00023372 030031 2009-09-27 21:33 69.00 特价
00023447 040102 2009-09-28 21:12 69.00 特价
00023448 020173 2009-09-28 21:12 69.00 特价
00023449 040017 2009-09-28 21:13 69.00 特价
00023464 030132 2009-09-28 21:37 81.00 正常
00023465 020145 2009-09-28 21:40 60.00 正常
00023466 030087 2009-09-28 21:45 72.00 正常
00023467 020102 2009-09-28 21:46 51.00 正常
00023469 040051 2009-09-28 21:51 60.00 正常
00023472 010299 2009-09-28 22:00 60.00 正常
00023496 010128 2009-09-29 19:11 72.00 特价
00023499 040239 2009-09-29 19:16 51.00 特价
00023500 030108 2009-09-29 19:16 60.00 特价
00023501 030089 2009-09-29 19:16 72.00 特价
00023502 030068 2009-09-29 19:16 81.00 特价
00023503 020013 2009-09-29 19:16 60.00 特价
00023504 010247 2009-09-29 19:16 162.00 特价
00023505 020255 2009-09-29 19:16 51.00 特价
00023506 020132 2009-09-29 19:16 60.00 特价
00023507 010229 2009-09-29 19:16 81.00 特价
00023518 020179 2009-09-29 20:03 81.00 特价
00023521 020183 2009-09-29 20:42 81.00 特价
00023526 010149 2009-09-29 20:58 77.00 特价
00023607 010078 2009-09-30 19:46 81.00 特价
00023608 020051 2009-09-30 19:46 77.00 特价
00023609 010158 2009-09-30 19:46 60.00 特价
00023610 040107 2009-09-30 19:46 81.00 特价
00023611 010044 2009-09-30 19:46 180.00 特价

select * from rfm2 where customer=10006,这样查找customer=10006可以得出结果,为什么select * from rfm2 where type=特价得到的结果就为空呢,我想把type=特价的筛选出来,怎么能解决呢

14 个解决方案

#1


[特价 => '特价'
文本类型需要单引号,
引用 1 楼 Runnerchin 的回复:
特价 => '特价'
文本类型需要单引号
加了单引号也不行,双引号也尝试过, 贴一下你的建表SQL, 销售类型 字段类型是什么?,
引用 3 楼 yenange 的回复:
贴一下你的建表SQL
drop table if exists rfm2;
create table rfm2
(
     id  varchar(20),
    customer int(10),
    date datetime(6),
    money  NUMERIC(8),
    type   varchar(20)
);,
引用 4 楼 sinat_28984567 的回复:
销售类型 字段类型是什么?
 varchar(20),
引用 5 楼 moshangdanqing 的回复:
Quote: 引用 3 楼 yenange 的回复:

贴一下你的建表SQL
drop table if exists rfm2;
create table rfm2
(
     id  varchar(20),
    customer int(10),
    date datetime(6),
    money  NUMERIC(8),
    type   varchar(20)
);

主要是看你的字符编码。 
你这个不是mysql产生的, 你在navicat或workbench右键导出结构看下,
引用 6 楼 moshangdanqing 的回复:
Quote: 引用 4 楼 sinat_28984567 的回复:

销售类型 字段类型是什么?
 varchar(20)

搜索不出来应该会报错的吧,看看报的错误是设么,
引用 7 楼 yenange 的回复:
Quote: 引用 5 楼 moshangdanqing 的回复:

Quote: 引用 3 楼 yenange 的回复:

贴一下你的建表SQL
drop table if exists rfm2;
create table rfm2
(
     id  varchar(20),
    customer int(10),
    date datetime(6),
    money  NUMERIC(8),
    type   varchar(20)
);

主要是看你的字符编码。 
你这个不是mysql产生的, 你在navicat或workbench右键导出结构看下
-- Table structure for `rfm2`
-- ----------------------------
DROP TABLE IF EXISTS `rfm2`;
CREATE TABLE `rfm2` (
`id`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`customer`  int(10) NULL DEFAULT NULL ,
`date`  datetime(6) NULL DEFAULT NULL ,
`money`  decimal(8,0) NULL DEFAULT NULL ,
`type`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
;     MS-SQL打开长这样,
引用 8 楼 sinat_28984567 的回复:
Quote: 引用 6 楼 moshangdanqing 的回复:

Quote: 引用 4 楼 sinat_28984567 的回复:

销售类型 字段类型是什么?
 varchar(20)

搜索不出来应该会报错的吧,看看报的错误是设么
不报错,只显示空, 用 type LIKE '%特价%' 试下 如果有结果说明 字段前后有不可识别字符,
引用 11 楼 firer2006 的回复:
用 type LIKE '%特价%' 试下 如果有结果说明 字段前后有不可识别字符
select * from rfm2 where type='%特价%',这样也是空,    按下贴中的方法检查字符集设置。并贴出以供分析。
   
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码, 用其他条件找到要查询的记录,使用 select hex(type) 看下对应的编码到底是什么]

#1


[特价 => '特价'
文本类型需要单引号,
引用 1 楼 Runnerchin 的回复:
特价 => '特价'
文本类型需要单引号
加了单引号也不行,双引号也尝试过, 贴一下你的建表SQL, 销售类型 字段类型是什么?,
引用 3 楼 yenange 的回复:
贴一下你的建表SQL
drop table if exists rfm2;
create table rfm2
(
     id  varchar(20),
    customer int(10),
    date datetime(6),
    money  NUMERIC(8),
    type   varchar(20)
);,
引用 4 楼 sinat_28984567 的回复:
销售类型 字段类型是什么?
 varchar(20),
引用 5 楼 moshangdanqing 的回复:
Quote: 引用 3 楼 yenange 的回复:

贴一下你的建表SQL
drop table if exists rfm2;
create table rfm2
(
     id  varchar(20),
    customer int(10),
    date datetime(6),
    money  NUMERIC(8),
    type   varchar(20)
);

主要是看你的字符编码。 
你这个不是mysql产生的, 你在navicat或workbench右键导出结构看下,
引用 6 楼 moshangdanqing 的回复:
Quote: 引用 4 楼 sinat_28984567 的回复:

销售类型 字段类型是什么?
 varchar(20)

搜索不出来应该会报错的吧,看看报的错误是设么,
引用 7 楼 yenange 的回复:
Quote: 引用 5 楼 moshangdanqing 的回复:

Quote: 引用 3 楼 yenange 的回复:

贴一下你的建表SQL
drop table if exists rfm2;
create table rfm2
(
     id  varchar(20),
    customer int(10),
    date datetime(6),
    money  NUMERIC(8),
    type   varchar(20)
);

主要是看你的字符编码。 
你这个不是mysql产生的, 你在navicat或workbench右键导出结构看下
-- Table structure for `rfm2`
-- ----------------------------
DROP TABLE IF EXISTS `rfm2`;
CREATE TABLE `rfm2` (
`id`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`customer`  int(10) NULL DEFAULT NULL ,
`date`  datetime(6) NULL DEFAULT NULL ,
`money`  decimal(8,0) NULL DEFAULT NULL ,
`type`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
;     MS-SQL打开长这样,
引用 8 楼 sinat_28984567 的回复:
Quote: 引用 6 楼 moshangdanqing 的回复:

Quote: 引用 4 楼 sinat_28984567 的回复:

销售类型 字段类型是什么?
 varchar(20)

搜索不出来应该会报错的吧,看看报的错误是设么
不报错,只显示空, 用 type LIKE '%特价%' 试下 如果有结果说明 字段前后有不可识别字符,
引用 11 楼 firer2006 的回复:
用 type LIKE '%特价%' 试下 如果有结果说明 字段前后有不可识别字符
select * from rfm2 where type='%特价%',这样也是空,    按下贴中的方法检查字符集设置。并贴出以供分析。
   
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码, 用其他条件找到要查询的记录,使用 select hex(type) 看下对应的编码到底是什么]