我有这个问题:
SELECT Users.FirstName, Users.LastName, Users.UserEmail
FROM Users
WHERE Users.FirstName LIKE '%1%' OR
Users.LastName LIKE '%1%' OR
Users.UserEmail LIKE '%a%' AND
Users.UserEmail <> 'a@a.a';
LIKE中的内容为'a'时,我不会收到电子邮件'a @ aa',但例如,如果与此电子邮件相关的名字或姓氏包含char 1,我在结果中收到了这封电子邮件。
我的问题是为什么以及如何预防呢? 感谢
答案 0 :(得分:2)
您需要用括号包装&#34;或&#34;
SELECT Users.FirstName, Users.LastName, Users.UserEmail
FROM Users
WHERE
(
Users.FirstName LIKE '%1%' OR
Users.LastName LIKE '%1%' OR
Users.UserEmail LIKE '%a%'
)
AND
Users.UserEmail <> 'a@a.a';
原因是因为第一个&#34;或&#34;条件满足,那么&#34;不是&#34;部分并不重要,因为它没有用括号分隔。