SQL布尔逻辑条件

时间:2013-04-24 14:40:43

标签: sql boolean-logic

我对这个陈述很困惑,为什么会这样。

如果类型为“罕见”,则价格必须超过500美元

这种情况符合它,但我很困惑。

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

这个问题也是, 如果类型是“新颖的”,那么价格必须超过10美元但不到30美元。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

你可以进行相同的练习(键入&lt;&gt;&#39;稀有&#39; OR价格&gt; 500`,你会发现它们在逻辑上是等价的。

为什么呢?直观地说,表达式为:&#34;如果类型为rare,那么价格必须超过500美元&#34;只是&#34;关心&#34;关于类型是罕见的。如果类型罕见,则该语句为true。同样,如果价格大于500美元,那么它将永远是真的。 check表达式只是捕获这两个条件。