关于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等马首是瞻,连它错了,我也不敢肯定。唉。。。。 展开
示例
下面的示例检索某些书名,这些书具有大于 $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等马首是瞻,连它错了,我也不敢肯定。唉。。。。 展开
2个回答
展开全部
探讨一下:
首先,我要说微软的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 的心理学书籍或者所有商业书籍。 ”
首先,我要说微软的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 的心理学书籍或者所有商业书籍。 ”
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询