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と、配列内の要素の 1 つだけに応じて行が返されます。Like .. Or 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.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 に答える