Mysql - 如何在sting的单词上进行通配符搜索

时间:2015-07-10 19:26:06

标签: mysql search wildcard

我有一个搜索的词是'samsung s3',而我在数据库中的产品名称是'samsung galaxy s3'。

我的查询是:

select * from products where status=1 and name like '%samsung s3%'

所以我没有得到任何结果,我们是否可以在名称字符串中搜索单词。

3 个答案:

答案 0 :(得分:1)

您必须使用关键字。可能在您保存产品名称以便能够使用所有关键字进行搜索时,请为要搜索的所有内容添加单独的关键字。现在这对我来说是最好的方式。

例如:对于Samsung Galaxy s3,我会在关键字表中保存3个条目,即:Samsung,Galaxy,s3

否则,您可以拆分搜索字符串并搜索数据库中的每个单词。

例如:

select * from products where status=1 and (name like '%samsung%' or name like '%s3%')

MS SQL中有一个全文搜索。它可能在MySQL或其等价物中可用。

编辑:搜索并确认MySQL存在全文搜索。这是一个link 但要注意全文搜索很慢。特别是如果它是一个大型数据库。

答案 1 :(得分:0)

MySql具有纯文本和varchar列的自然语言搜索功能。

https://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html

你的想法是:

select * from products where status=1 MATCH (name) AGAINST ('samsung s3'); 

答案 2 :(得分:0)

  1. 在名称字段

    上创建全文索引
    ALTER TABLE products ADD FULLTEXT (name);
    
  2. 运行查询: -

    SELECT * FROM products WHERE status=1 AND name MATCH(name) AGAINST ('+samsung +s3' IN BOOLEAN MODE);