1

我在 PHP 中有一个名为groups的字符串数组。根据用户输入,数组看起来像这样:groups[All, Sales]

示例:(更新的表模式)

groups[] = ['Sales', 'All']

            ANNOUNCEMENT
 |description|masterID|  groupName   |
=======================================
 | hello     | 1      | All, Final,  |
 | greetings | 2      | Sales, All,  |
 | demo      | 3      | Final,       |

因此,从上表中它应该只返回“ hello ”和“ greetings ”作为输出,因为groups[]SalesAll,因为第 1 行有 All 而第 2 行两者都有。请帮忙。我是 SQL 和 PHP 的业余爱好者。

我目前的尝试:

SELECT * FROM announcement WHERE groupName REGEXP '(Sales | All)'

输出:

No rows affected
4

2 回答 2

3
  1. 我想,你的组应该真的是字符串格式:groups[] = ['Final', 'All', 'Test'].

  2. $search = implode('|', $groups)将产生一个字符串Final|All|Test

  3. 现在,您需要将此字符串放入查询中,以按其中一个或单词进行搜索。所以,这是WHERE groupName REGEXP '({$search})'. 不要忘记查询中的引号,以免它们与您放入整个查询的引号发生冲突。

于 2013-05-05T03:00:41.483 回答
1

MySQL 执行类似 Perl 的正则表达式。构造一个类似这样的查询:

SELECT description
  FROM announcement NATURAL JOIN master
 WHERE groupName REGEXP '\\b(Final|All|Test)\\b';
于 2013-05-04T13:00:46.873 回答