我有一个SQL表,其中有一个名为keywords
的列。
表:
| id | keywords |
| 0 | music programming guitar |
现在我有一个像$array = array("boat", "water", "music");
这样的数组。
我的目标是从keywords
中的数组中选择至少包含其中一项内容的所有列。
SQL查询:
"SELECT * FROM table WHERE keywords IN ('".$array."')";
它什么都不返回。
答案 0 :(得分:1)
我不打算采用我要描述的方法。正确的方法是建立一个单独的表,每个id
和keyword
有一行。这是一个联结表,它有如下行:
id keyword
1 music
1 programming
1 guitar
这是在关系数据库中存储列表的正确方法。数据库具有列表的这种出色的数据结构。它被称为表,而不是字符串。
但是,如果你真的遇到这种情况,那么你可以破解你的解决方案。据推测,性能不是问题。
hack是将列表格式化为正则表达式,并将where
子句创建为:
where keywords regexp 'boat|water|music'