将较长的字符串与较短的字符串匹配

时间:2012-05-04 13:00:42

标签: mysql

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

我将举一个更好理解的例子:

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

3 个答案:

答案 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>