2016.12.1
八.布尔逻辑
8.1 AND、OR、NOT
这3个操作符都用来为WHERE子句添加额外的功能。
SELECT
Columnlist
FROM table
WHERE condition1 AND/OR condition2
AND子句表示对于选中的行,所有条件的计算结果都必须为真。
OR子句中,任意一个条件为真,就选中该行。
SELECT
Columnlist
FROM table
WHERE NOT condition1 等价于WHERE <> condition
NOT表示对其后边的内容取反或否定
8.2 使用括号
SQL有一个预定义的计算顺序,它指定了对不同操作符的解释顺序。一般先处理AND操作符再处理OR操作符。这个顺序可以通过加括号改变。
SELECT
Columnlist
FROM table
WHERE (condition1 OR condition2)AND condition3
当然,当条件太多,括号可以嵌套,先执行内括号的操作再依次向外。
8.3 BETWEEN...AND 表示了AND的一个特例,可以同NOT一起用。
SELECT
Columnlist
FROM table
WHERE columnvalue [NOT]BETWEEN value1ANDvalue2
8.4 IN 表示了OR的一个特例。可以同NOT一起用。
SELECT
Columnlist
FROM table
WHERE columnvalue [NOT]IN (‘value1’,’value2’)
8.5 布尔逻辑与NULL值
当WHERE子句中进行条件判断时,有3种可能,真,假和未知。
SELECT
Columnlist
FROM table
WHERE condition1 OR columnvalue IS [NOT] NULL
或
SELECT
Columnlist
FROM table
WHERE condition1 OR ISNULL(column,0)=0
或
SELECT
Columnlist,
ISNULL(column,0) AS ‘name’
FROM table
WHERE name=0 OR name IS NULL