SQL Server select-where语句问题

Geo*_*ge2 0 t-sql sql-server between sql-server-2008

我在Windows Server 2008 Enterprise上使用SQL Server 2008 Enterprise.我在SQL Server 2008中有关于tsql的问题.对于select-where语句,有两种不同的形式,

(1)选择[some value]和[some value]之间的foo,

(2)选择foo> = [some value]和foo <= [其他值]的地方?我不确定是否和使用<=和> =符号相同?

顺便说一句:它们是否总是相同 - 即使对于不同类型的数据(例如比较数值,比较字符串值),如果有人可以提供一些文件来证明它们是否总是相同,那么我会感激,以便我可以从中学到更多.

乔治,提前谢谢

Mar*_*ith 6

是的,他们总是一样的.在联机丛书入门BETWEEN

如果test_expression的值大于或等于begin_expression的值且小于或等于end_expression的值,则BETWEEN返回TRUE.

事实上,通过查看执行计划,您可以轻松地看到这一点.你会看到它Between甚至没有出现在文本中.它已被替换>=,并<=没有在两者之间做出区分.

SELECT * FROM master.dbo.spt_values 
WHERE number between 1 and 3 /*Numeric*/

SELECT * FROM master.dbo.spt_values 
WHERE name between 'a' and 'b' /*String*/

select * from sys.objects 
WHERE create_date between GETDATE() and GETDATE()+100 /*Date*/
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @ George2 - 在"查询"菜单上选择"包含实际执行计划",然后运行查询或"CTRL + M",这显示实际计划.编辑:穆罕默德已经解释了如何看待估计的计划.估计的计划可以更好,因为您甚至不必执行查询. (2认同)