我在PHP中有一个名为 groups 的字符串数组。根据用户输入,数组看起来像这样: groups [All,Sales] 。
示例:(更新表格模式)
groups[] = ['Sales', 'All']
ANNOUNCEMENT
|description|masterID| groupName |
=======================================
| hello | 1 | All, Final, |
| greetings | 2 | Sales, All, |
| demo | 3 | Final, |
因此,从上表中它只应返回“ hello ”和“问候”作为输出,因为 groups [] 具有销售和全部,因为第1行包含All,第2行包含两者。请帮忙。我是SQL和PHP的业余爱好者。
我目前的尝试:
SELECT * FROM announcement WHERE groupName REGEXP '(Sales | All)'
输出:
No rows affected
答案 0 :(得分:3)
我想,您的论坛应该采用字符串格式:groups[] = ['Final', 'All', 'Test']
。
此$search = implode('|', $groups)
将生成字符串Final|All|Test
。
现在您需要将此字符串放入查询中,以便按任意一词或单词进行搜索。所以,这是WHERE groupName REGEXP '({$search})'
。不要忘记查询中的引号,以免它们与您放入整个查询的引号冲突。
答案 1 :(得分:1)
MySQL做类似Perl的正则表达式。构造类似于此的查询:
SELECT description
FROM announcement NATURAL JOIN master
WHERE groupName REGEXP '\\b(Final|All|Test)\\b';