在T-SQL中注意and和or的优先级问题
2012-05-02 14:43
232 查看
示例
下面的示例检索某些书名,这些书具有大于 $5,500 的预付款,并且这些书籍是商业书籍或心理学书籍。如果没有括号,又该是怎样的哩?
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, type
FROM titles
WHERE (type = 'business' OR type = 'psychology') AND
advance > $5500
ORDER BY title
GO
由于AND和OR的优先级不同,那么此Where条件就变成了相当于如下的表示:
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, type
FROM titles
WHERE type = 'business' OR (type = 'psychology'AND
advance > $5500)
ORDER BY title
GO
这样“(type = 'psychology'AND
advance > $5500) ”经运算后就变成了一个独立条件再与“type = 'business' ”进行 OR 运算。
AND的语义是:二者必须满足才为RTUE;
OR的语义是:二者只要有一个满足就为TRUE,言外之意,二者同时满足也为TRUE。
结论:
“如果没有括号,那么 WHERE 子句就会检索预付款超过 $5,500 的心理学书籍或者所有商业书籍。 ”
转载自:http://zhidao.baidu.com/question/43216282.html
下面的示例检索某些书名,这些书具有大于 $5,500 的预付款,并且这些书籍是商业书籍或心理学书籍。如果没有括号,又该是怎样的哩?
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, type
FROM titles
WHERE (type = 'business' OR type = 'psychology') AND
advance > $5500
ORDER BY title
GO
由于AND和OR的优先级不同,那么此Where条件就变成了相当于如下的表示:
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, type
FROM titles
WHERE type = 'business' OR (type = 'psychology'AND
advance > $5500)
ORDER BY title
GO
这样“(type = 'psychology'AND
advance > $5500) ”经运算后就变成了一个独立条件再与“type = 'business' ”进行 OR 运算。
AND的语义是:二者必须满足才为RTUE;
OR的语义是:二者只要有一个满足就为TRUE,言外之意,二者同时满足也为TRUE。
结论:
“如果没有括号,那么 WHERE 子句就会检索预付款超过 $5,500 的心理学书籍或者所有商业书籍。 ”
转载自:http://zhidao.baidu.com/question/43216282.html
相关文章推荐
- SQL中not and or优先级问题
- 请教:SQL语句中OR和AND的优先级问题
- 数据库sql中and和or优先级的问题
- sql中的or与and的执行顺序问题
- asp的SQL语句中and和or同时使用的注意事项
- sql语句and及or的优先级
- SQL中and与or优先级比较
- 关系运算符:or、and的优先级问题
- Sql Server中and和or的优先级问题
- sql where and or优先级 待验证
- SQL中AND和OR的运算顺序, AND优先级>OR优先级
- SQL语句中 and or执行优先级
- sql的where子句中包含多个and和or是计算顺序问题
- SQL中and与or优先级比较
- [Python]计算闰年时候出现的and和or优先级的问题以及短路逻辑
- SQL语句and、or优先级比较
- DB2数据库中SQL语句中使用or和and的关键字的时候注意事项
- sql中and的优先级比or高
- 关于and or的优先级的一个小问题
- SQL语句中的AND和OR执行顺序问题