SQL Server - 与where子句相反

Roy*_*ish 1 sql sql-server-2005

我有一个数据集,我想过滤掉满足特定条件的行,但是它比我想象的要复杂得多.

基本上我想做的事情是这样一种WHERE (column1 NOT LIKE 'Z%' and column2 != '2')观点,即查询只会返回一行,其中某一特定行没有像column1中的'Z%'那样的值,并且在column2 中没有值'2' .

例如:

完整的数据集

column1 | column2
-----------------
ACAL    | 2
-----------------
ZVBBU3  | 2
-----------------
FSKE2   | X
Run Code Online (Sandbox Code Playgroud)

我想要的数据集

column1 | column2
-----------------
ACAL    | 2
-----------------
FSKE2   | X
Run Code Online (Sandbox Code Playgroud)

但是,它没有这样做.所以,我想有可能是一个编程方法类似WHERE (!(column1 LIKE 'Z% and column2 = '2')),其中!将返回指定标准的对面,但是,这将引发一个语法错误.有没有办法做我想做的事情?

jpw*_*jpw 5

你可能想要这个:

WHERE NOT (column1 LIKE 'Z%' AND column2 = '2') 
Run Code Online (Sandbox Code Playgroud)

你是在正确的轨道上否定,但应该NOT用来否定而不是!.

注意

WHERE (COLUMN1 NOT LIKE 'Z%') OR (COLUMN2 != '2') 
Run Code Online (Sandbox Code Playgroud)

应该像德摩根的逻辑法则一样有效

结合的否定是否定的分离.
分离的否定是否定的结合.