0

我需要在 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循环,它将仅根据数组中的一个元素返回行,它不支持 Like .. 或 Like .. 逻辑

var idArr = id.split(",");
idArr.forEach(function (id) {
     _runQuery("SELECT * FROM `projects` WHERE `Tags` LIKE CONCAT('%', ',', '" + id + "', ',', '%')", function (rows) {....}
4

2 回答 2

1

给定一个数组

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

尝试这个

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

在这里看到它:http: //jsfiddle.net/XzXnf/

于 2013-01-24T01:04:16.730 回答
-1

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

“SELECT * from projects as p join tags as t on t.project_id = p.id where t.tag in (id[0], id[1], id[2]....)”

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

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

于 2013-01-24T01:09:05.300 回答