1

我有一个表单,用户可以在其中搜索表中的所有条目,但我遇到了特定条目的问题。

为了更好地理解,我举个例子:

用户可以选中 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 运算符的情况下执行此操作吗?

4

3 回答 3

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%'
于 2012-05-04T13:03:26.147 回答
0

我会说 - 不要使用 like,使用 substring 或一些类似的功能。

于 2012-05-04T13:03:39.533 回答
0

只需将其更改为:

string LIKE '%1%'
  OR
string LIKE '%2%'
  OR
string LIKE '%3%'
  ...

这将解决您的问题 - 但您应该真正考虑规范化您的数据库(在这种情况下,将 5 个不同的标志存储为 1/0 用于五个不同的设置,而不是将它们全部放在一个字段中)。

于 2012-05-04T13:10:59.177 回答