2013-04-24 154 views
-1

我对此陈述感到困惑,为什么它是真实的。SQL布尔逻辑条件

如果类型是“罕见”,那么价格必须超过$ 500强

这个条件满足了,但我很困惑如何。

CHECK (type <> 'rare' OR price > 500) 

这个问题,以及, 如果类型是“新型”,那么价格必须超过$ 10,但小于30 $。

CHECK ((type <> 'novel') OR (price > 10 AND price < 30)) 
+0

form'CHECK(键入<>'rare'或价格> 500)',使用'AND'而不是'OR'。 – 2013-04-24 14:43:43

回答

0

从概念上可以很难理解为什么它们是等价的。这可能有助于从四个条件开始,相对于:如果类型是rare,那么价格必须超过500美元。

Type = 'rare', price > $500: True 
Type <> 'rare', price > $500: True 
Type = 'rare', price <= $500: False 
Type <> 'rare', price <= $500 True 

你可以通过同样的练习(类型<>“罕见”或价格> 500`,你会发现它们在逻辑上是等价

为什么直观上,表达? “如果类型是rare那么价格必须超过500美元”仅仅是“关心”类型是罕见的。如果类型是而不是很少,那么声明是真实的。同样,如果价格大于500美元,那么它会永远是真的check表达式只是捕获这两个条件

0

“A或B” 是指这些语句中的至少一个为真。如果A不正确(type ='rare'),那么B必须为真(价格> 500)以满足条件。你拥有的第二个陈述具有完全相同的逻辑。