我试图找到所有不包含三个字符串的行,“加拿大”,“美国”和“美国”,这就是我所拥有的
SELECT
*
FROM
`Table`
WHERE
`address` LIKE "%United States%" = 0
OR `address` LIKE "%USA%" = 0
OR `address` LIKE "%Canada%" = 0
因此,如果它有“加拿大”或“美国”或“美国”,我不会出现它。它适用于如果有这样的
SELECT
*
FROM
`Table`
WHERE
`address` LIKE "%United States%" = 0
然后我得到了所有没有“美国”的东西,但它不适用于所有三个?
由于
答案 0 :(得分:2)
首先,我认为您应该使用NOT LIKE
代替LIKE = 0
,但主要问题是您使用OR作为负面条件,而不会给您带来结果想。你应该使用AND。
WHERE
`address` NOT LIKE "%United States%"
AND `address` NOT LIKE "%USA%"
AND `address` NOT LIKE "%Canada%"
你得到了意想不到的结果,因为如果这是OR的工作方式。如果它符合您情况中的任何三种情况,即使它与其他两种情况不匹配。因此,其中包含'USA'的字符串无法与LIKE "%USA%"
条件匹配,但它们确实与其他两个匹配,并且由于至少有一个OR条件匹配,因此返回该结果。
使用AND代替OR,您应该得到您期望的结果。
答案 1 :(得分:0)
WHERE $ targeted_column!=' $ prohibited_words'