如何搜索以逗号分隔的多个值。
例如:
表名:searchTest
id name keyword
1 trophy1 test1,test2,test3
2 trophy2 test2,test5
点数:
如果我搜索test2,则应显示trophy1和trophy2两个结果。
如果我搜索trophy1,那么trophy1应该是结果。
如何解决这个问题。
提前致谢
答案 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,%'
它可以使用以上查询
完成此操作