'LIKE('%this''或'%that%')和something = else'不起作用

Kev*_*shi 40 mysql sql sql-like

我有一个选择查询,我试图搜索字符串的多个模式

LIKE ('%this%' or '%that%' ) and something=else
Run Code Online (Sandbox Code Playgroud)

返回零结果

然而

LIKE '%this%' and something=else
Run Code Online (Sandbox Code Playgroud)

返回结果和

LIKE '%that%' and something=else
Run Code Online (Sandbox Code Playgroud)

返回结果

是否可以将我的所有结果都放入一个查询中?如果一个字符串匹配两者,它将如何处理?

Boh*_*ian 80

如果可以的话会很好,但你不能在SQL中使用这种语法.

试试这个:

(column1 LIKE '%this%' OR column1 LIKE '%that%') AND something = else
Run Code Online (Sandbox Code Playgroud)

注意使用括号!你需要围绕OR表达式.
没有括号,它将被解析为A OR (B AND C),它不会给你你期望的结果.

  • 谢谢!一旦你知道它是什么,这个错误似乎很明显:) (2认同)

小智 22

Instead of using `LIKE` use `REGEXP`.

For example:

    REGEXP 'THIS|THAT'

For example:

    REGEXP 'THIS|THAT'
mysql> SELECT 'pi' REGEXP 'pi|apa';                     -> 1
mysql> SELECT 'axe' REGEXP 'pi|apa';                    -> 0
mysql> SELECT 'apa' REGEXP 'pi|apa';                    -> 1
mysql> SELECT 'apa' REGEXP '^(pi|apa)$';                -> 1
mysql> SELECT 'pi' REGEXP '^(pi|apa)$';                 -> 1
mysql> SELECT 'pix' REGEXP '^(pi|apa)$';                -> 0

Refer:
http://dev.mysql.com/doc/refman/5.1/en/regexp.html
Run Code Online (Sandbox Code Playgroud)

  • 一个更具可读性的例子:`SELECT id FROM mytable WHERE description REGEXP"dogs | cats"` (3认同)

Dir*_*irk 5

尝试类似的东西:

WHERE (column LIKE '%this%' OR column LIKE '%that%') AND something = else