您的位置:首页 > 数据库

在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: