如何在MYSQL中查看逗号分隔值

时间:2015-02-28 10:00:56

标签: php mysql mysqli

我的数据库结构如下:

 Movie Name  GenreID**
 Movie1      1,2,3
 Movie2      2,4
 Movie3      4,5,16

我需要根据用户选择的类型ID选择一个电影名称,我将其放入genreIDArray[]

比方说,genreIDArray的值为:$genreIDArray = ['1','2','3'];

我当前的查询方法是ff:


在这里,我将每个ID准备成部分,因此结果不会变为genreID LIKE (%1,2,3%),因为我检查了这不起作用。

所以我做了这个分离循环:

$queryParts = array(); foreach($genresIDArray as $genreID) { $queryParts[] = "'%".$genreID."%'"; }

在分离循环之后,我将最终查询放在一起:

$genreString = implode(" OR genreID LIKE ",$queryParts); $genreQuery = " SELECT * FROM movies WHERE (genreID LIKE {$genreString}) ";

给了我最后的查询输出:

SELECT * FROM movies WHERE (genreID LIKE '%1%' OR genreID LIKE '%2%' OR genreID LIKE '%3%')

这实际上有效,但显然效率不高,因为genreID 11,12,13等以1开头也是如此。我想我在这里错过了MYSQL LIKE逻辑。我已经尝试了'%$genreID',这意味着要选择表格数据的startingfirst数字/字母,但这仍然是一样的,$genreID%没有,并且会不起作用,因为这只意味着genreid ENDING字母/数字将被选中。

我希望我能说清楚这一点。我在这里绑定。请帮忙。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

有一个非常酷的功能。您可以使用FIND_IN_SET

SELECT * FROM test WHERE FIND_IN_SET(1,colors)

但如果可能的话,你应该避免数据库中的这种结构并规范化你的数据库。