我对此陈述感到困惑,为什么它是真实的。SQL布尔逻辑条件
如果类型是“罕见”,那么价格必须超过$ 500强
这个条件满足了,但我很困惑如何。
CHECK (type <> 'rare' OR price > 500)
这个问题,以及, 如果类型是“新型”,那么价格必须超过$ 10,但小于30 $。
CHECK ((type <> 'novel') OR (price > 10 AND price < 30))
我对此陈述感到困惑,为什么它是真实的。SQL布尔逻辑条件
如果类型是“罕见”,那么价格必须超过$ 500强
这个条件满足了,但我很困惑如何。
CHECK (type <> 'rare' OR price > 500)
这个问题,以及, 如果类型是“新型”,那么价格必须超过$ 10,但小于30 $。
CHECK ((type <> 'novel') OR (price > 10 AND price < 30))
从概念上可以很难理解为什么它们是等价的。这可能有助于从四个条件开始,相对于:如果类型是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
表达式只是捕获这两个条件
“A或B” 是指这些语句中的至少一个为真。如果A不正确(type ='rare'),那么B必须为真(价格> 500)以满足条件。你拥有的第二个陈述具有完全相同的逻辑。
form'CHECK(键入<>'rare'或价格> 500)',使用'AND'而不是'OR'。 – 2013-04-24 14:43:43