如何在mysql中搜索逗号分隔的多个值

时间:2010-05-01 11:34:23

标签: php mysql

如何搜索以逗号分隔的多个值。

例如:

表名:searchTest

id    name      keyword

1     trophy1   test1,test2,test3

2     trophy2   test2,test5

点数:

  1. 如果我搜索test2,则应显示trophy1和trophy2两个结果。

  2. 如果我搜索trophy1,那么trophy1应该是结果。

  3. 如何解决这个问题。

    提前致谢

6 个答案:

答案 0 :(得分:3)

我想说,在这里,您的数据结构非常不正确。

如果不使用逗号分隔格式在一个字段中存储多个值,这将是一个更好的解决方案,但使用三个表,以这种方式定义:

  • searchtest
    • id
    • name
  • keywords
    • id
    • word
  • keywords_searchtest
    • id_keyword
    • id_searchtest


这样,在searchtest中搜索具有特定关键字的条目就会非常简单:

select searchtest.*, keywords.*
from searchtest
    inner join keywords_searchtest on keywords_searchtest.id_searchtest = searchtest.id
    inner join keywords on keywords.id = keywords_searchtest.id_keyword
where keywords.word = 'test2'


此外,您还必须搜索具有特定名称的searchtest条目:

select *
from searchtest
where name = 'trophy1'

答案 1 :(得分:1)

这些关键字必须存储在单独的表格中

答案 2 :(得分:1)

对于第1点: 从searchTest中选择*,其中关键字如LIKE'%test2%

对于第2点: 从searchTest中选择*,其中名称为LIKE'trophy1%

答案 3 :(得分:1)

使用FIND_IN_SET MySQL字符串函数,如下所示:

SELECT * FROM searchTest WHERE FIND_IN_SET('test2', keyword) > 0

答案 4 :(得分:0)

你可以使用like。

select * from searchTest where keyword like '%test2%'

%是通配符。

答案 5 :(得分:0)

select * from searchTest where keyword  LIKE 'test2' or LIKE '%,test2' or LIKE 'test2,%'

它可以使用以上查询

完成此操作