mysql中的多个like条件

时间:2015-02-22 07:27:19

标签: mysql

当我使用带有AND关键字的多个like条件时,它实际上将返回false值,它在表中有值,我的查询如下:

  SELECT * FROM tbl_student 
  WHERE name LIKE '%jame%' 
  AND ( id LIKE '%001%' 
        AND id2 LIKE '%002%'
       )

此查询返回空行

SELECT * FROM tbl_student 
WHERE name LIKE '%jame%' 
OR ( id LIKE '%001%' 
     AND id2 LIKE '%002%'
   )

此查询返回数据

tbl_student
Name         ID      ID2
jame          233     3234 
jame333       1001    0222
jame333 Da    1001    1002

使用AND关键字时为什么返回空数据?

1 个答案:

答案 0 :(得分:2)

使用AND运算符的查询不会返回所需的数据,因为括号内的条件总是评估为false。

发生这种情况的原因是因为您尝试在整数上使用LIKE '%str%'。这预计不会奏效。如果您坚持使用LIKE,则可能需要CAST整数到字符串:

SELECT *
  FROM tbl_student 
 WHERE name LIKE '%jame%' 
   AND (CAST(id AS CHAR) LIKE '%001%' AND
        CAST(id2 AS CHAR) LIKE '%002%');

仅供参考,e1 AND (e2 AND e3)逻辑表达式仍为相同,省略括号。