首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当我们可以不使用BETWEEN运算符时,为什么还要使用它呢?

当我们可以不使用BETWEEN运算符时,为什么还要使用它呢?
EN

Stack Overflow用户
提问于 2009-12-25 16:42:26
回答 9查看 22.5K关注 0票数 16

如下两个查询所示,我们发现它们都工作得很好。然后我感到困惑,为什么我们要使用BETWEEN,因为我发现在不同的数据库中,BETWEEN的行为是不同的,正如在w3school中发现的那样

代码语言:javascript
复制
SELECT *
FROM employees
WHERE salary BETWEEN 5000 AND 15000;

SELECT *
FROM employees
WHERE salary >= 5000
AND salary <= 15000;
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-12-25 17:17:12

BETWEEN可以帮助避免对表达式进行不必要的重新计算:

代码语言:javascript
复制
SELECT  AVG(RAND(20091225) BETWEEN 0.2 AND 0.4)
FROM    t_source;

---
0.1998

SELECT  AVG(RAND(20091225) >= 0.2 AND RAND(20091225) <= 0.4)
FROM    t_source;

---
0.3199

t_source只是一个包含1,000,000记录的虚拟表。

当然,这可以使用子查询来解决,但在MySQL中效率较低。

当然,BETWEEN更具可读性。为了永远记住语法,在查询中使用它需要花费3时间。

SQL ServerMySQL中,对具有非前导'%'的常量的LIKE也是>=<对的简写

代码语言:javascript
复制
SET SHOWPLAN_TEXT ON
GO
SELECT  *
FROM    master
WHERE   name LIKE 'string%'
GO
SET SHOWPLAN_TEXT OFF
GO


|--Index Seek(OBJECT:([test].[dbo].[master].[ix_name_desc]), SEEK:([test].[dbo].[master].[name] < 'strinH' AND [test].[dbo].[master].[name] >= 'string'),  WHERE:([test].[dbo].[master].[name] like 'string%') ORDERED FORWARD)

但是,LIKE语法更清晰。

票数 32
EN

Stack Overflow用户

发布于 2009-12-25 17:07:48

当所比较的表达式是一个复杂的计算而不仅仅是一个简单的列时,使用BETWEEN有额外的优点;它省去了两次写出复杂的表达式。

票数 16
EN

Stack Overflow用户

发布于 2009-12-25 16:51:53

带有"between“的版本更容易阅读。如果我使用第二个版本,我可能会把它写成

代码语言:javascript
复制
5000 <= salary and salary <= 15000

出于同样的原因。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1960801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档