关于sql中or 和and的问题。(在线等)

微软的SQLSERVER2000的联机从书上说:将两个条件结合起来。当在一个语句中使用多个逻辑运算符时,在AND运算符之后求OR运算符的值。但是,通过使用括号可以更改求值... 微软的SQL SERVER2000的联机从书上说:将两个条件结合起来。当在一个语句中使用多个逻辑运算符时,在 AND 运算符之后求 OR 运算符的值。但是,通过使用括号可以更改求值的顺序。

示例
下面的示例检索某些书名,这些书具有大于 $5,500 的预付款,并且这些书籍是商业书籍或心理学书籍。如果没有括号,那么 WHERE 子句就会检索预付款超过 $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

在他的说明中,我觉得有个地方是错的,但是我想微软怎么会出这样的错。于是向大家求证。我觉的他说的“如果没有括号,那么 WHERE 子句就会检索预付款超过 $5,500 的所有商业书籍或者心理学书籍。”这句是错的。而是“如果没有括号,那么 WHERE 子句就会检索预付款超过 $5,500 的所有心理学书籍和所有的商业书籍。”
看样子,微软的汉字做的不怎么样。希望民族企业挣点气,让我们也用用国人的产品。现在都为微软,IBM,ORACLE等马首是瞻,连它错了,我也不敢肯定。唉。。。。
展开
 我来答
xjxf520117
2008-01-06 · TA获得超过144个赞
知道答主
回答量:65
采纳率:0%
帮助的人:99.4万
展开全部
探讨一下:
首先,我要说微软的SQL SERVER2000的联机从书上说的“错!”。

第二,由于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 的所有商业书籍或者心理学书籍。 ”

应改为:

“如果没有括号,那么 WHERE 子句就会检索预付款超过 $5,500 的心理学书籍或者所有商业书籍。 ”
gotochenjie
2008-01-06 · TA获得超过644个赞
知道小有建树答主
回答量:411
采纳率:0%
帮助的人:385万
展开全部
建个数据库 验证一下就可以了 看看是不是微软错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式