我有一个表格,用户可以搜索表格中的所有条目,但我遇到特定条目的问题。
我将举一个更好理解的例子:
用户可以查看5个方框:1,2,3,4,5,并检查所有方框。
如果特定行的值为“1 | 2 | 3”,我的搜索查询将无法找到它。
事先我在php中获取post变量(这是一个数组)并在每个值之前和之后添加'%'。在这种情况下:'%1%2%3%4%5%'
我的搜索查询:
SELECT id FROM table WHERE string LIKE '%1%2%3%4%5%'
在这种情况下,它将找不到值为“1 | 2 | 3”的行。 我想这种方式是正常的,它反过来很好但我想执行一个匹配原始字符串部分的查询。在我的情况下'%1%2%3%4%5%'匹配'1 | 2 | 3'。
我该怎么做?
提前感谢您抽出时间。
编辑:我可以在没有多个AND,OR运算符的情况下执行此操作吗?
答案 0 :(得分:0)
在您找到更性感和更高效的内容之前,您可以使用:
SELECT id FROM table WHERE string LIKE '%1%' OR string LIKE '%2%' OR string LIKE '%3%' OR string LIKE '%4%' OR string LIKE '%5%'
答案 1 :(得分:0)
我会说 - 不要使用like,使用substring或类似的函数。
答案 2 :(得分:0)
只需将其更改为:
string LIKE '%1%'
OR
string LIKE '%2%'
OR
string LIKE '%3%'
...
这可以解决你的问题 - 但是你应该考虑normalizing your database(在这种情况下,将5个不同的标志存储为5个不同的标志,而不是将它们全部放在一个字段中)。 / p>