Javascript 如何在查询like中使用数组的元素

Javascript 如何在查询like中使用数组的元素,javascript,jquery,sql-like,Javascript,Jquery,Sql Like,我需要在jQuery的查询中使用元素数组。我的问题是: "SELECT * FROM `projects` WHERE `Tags` LIKE CONCAT('%', ',', ('" + id + "'), ',', '%')" 其中id是一个动态数组,因此我基本上需要: "SELECT * FROM `projects` WHERE `Tags` LIKE CONCAT('%', ',', ('" + id[0] + "'), ',', '%') **OR LIKE id[1] OR LI

我需要在jQuery的查询中使用元素数组。我的问题是:

"SELECT * FROM `projects` WHERE `Tags` LIKE CONCAT('%', ',', ('" + id + "'), ',', '%')"
其中
id
是一个动态数组,因此我基本上需要:

"SELECT * FROM `projects` WHERE `Tags` LIKE CONCAT('%', ',', ('" + id[0] + "'), ',', '%') **OR LIKE id[1] OR LIKE id[2]**..."
如果我使用一个
forEach
循环,它将只根据数组中的一个元素返回行,不支持像。。或者像。。逻辑

var-idArr=id.split(“,”);
idArr.forEach(函数(id){
_runQuery(“从`projects`中选择*,其中`Tags`像CONCAT('%','','',''',“+id+”,',','%')”),函数(行){..}
给定一个数组

var id = [1,2,3,4,5];
试试这个

 " WHERE tags LIKE '%"+ id.join("%' OR tags LIKE '%")+'%');

请看这里:

对您的问题最简单的回答是:标签可能应该是一个单独的表,那么您将有:

从项目中选择*作为p连接标记作为t on t.project\u id=p.id,其中t.tag in(id[0],id[1],id[2]…)

当然,您可以很容易地通过连接生成所需的id字符串(id.join(“,”)可能会这样做


或者,正如@codingbiz所指出的,您可以使用更复杂的id.join()调用以扩展所需的OR,但这种方法有其局限性,在规范化开始看起来像一个好主意之前,这是一个尽可能复杂的查询。

我关心的是,这看起来不像是特定于JavaScript的。在什么框架下鼓励或实践在JavaScript中编写这样的SQL语句别担心。我假设这是一个nodejs服务器端应用程序,而jquery标记是错误的。如果这是在客户端完成的,我会不寒而栗。谢谢你,我生成了2个字符串,然后将它们添加到select中,但是使用join看起来更优雅。那么,为什么它被标记为jquery?据我所知,这里没有jquery特定的内容。这是吗是针对数据库运行的查询,还是JavaScript框架的另一种风格?