select * from customer,person where customer.customername like '%a%' or customerdeptname like '%a%' or person.contact_person='%a%'这个语句,把没有a的也显示出来了。什么原因?
可能是因为你有些纪录中间有中文,会出现这种情况。该一下mysql的语系可能可以解决记得你以前提过一个全文搜索的问题,建议你用全文检索功能。 eg: 创建数据表的时候加上fulltext索引 CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,body) );以后就可以用 SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('findKey');
select * from customer,person where customer.customername like '%a%' or customerdeptname like '%a%' or person.contact_person or '%a%'用=号是打错了,实际上是OR,用中文查没问题,但用英文就不行
eg:
创建数据表的时候加上fulltext索引
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);以后就可以用
SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('findKey');
default_character_set=gbk
或把数据库中的中文字段属性改为binary
可能是
my.cnf
my-example.cnf
my.ini
三者之一,其中前两个文件要在dos要才可以看到全名
在[mysqld]项下面加上一行
default-character-set=gbk
重新启动mysql就行了