Mysql 按多列搜索

Mysql 按多列搜索,mysql,Mysql,我正在尝试使用表中的3列中的任意一列进行搜索。 我有3个字段,用户可以搜索代码,名称或类别 我的问题是 SELECT code, name, number, category FROM table WHERE name LIKE '%{NameField}%' OR code LIKE '%{CodeField}%' OR category LIKE '%{CategoryField}%' ORDER BY name ASC 我尝试填充其中一个字段,因此查询将如下所示: SELECT code

我正在尝试使用表中的3列中的任意一列进行搜索。 我有3个字段,用户可以搜索代码,名称或类别

我的问题是

SELECT code, name, number, category
FROM table
WHERE name LIKE '%{NameField}%' OR code LIKE '%{CodeField}%' OR category LIKE '%{CategoryField}%'
ORDER BY name ASC
我尝试填充其中一个字段,因此查询将如下所示:

SELECT code, name, number, category
FROM table
WHERE name LIKE '%%' OR code LIKE '%DOG_10%' OR category LIKE '%%'
ORDER BY name ASC
它没有返回空值或任何东西,但它只是返回了表,代码没有被过滤


我应该使用AND而不是OR吗?

在比较中,您使用的名称如“%”或代码如“%DOG\u 10%”或类别如“%”或。。。这句话的意思是,抓取所有的数据,如果这个列有任何内容,如果它有DOG_10,那么抓取它,或者如果它有任何类别,那么抓取它。是的,这就是我的想法,但我不知道我的表出了什么问题,它没有过滤它。你可能想要调查MySQL中的全文功能。例如“%something%”或。。。是在MySQL中搜索表的最慢的方法。当然像“%”一样匹配表中的每一行。啊等等,我想我现在明白了。由于where条件是“搜索狗”或“%”,因此它也匹配表中的所有内容。但是如果是这样的话,我应该如何正确地过滤它呢?