我正在Windows Server 2008 Enterprise上使用SQL Server 2008 Enterprise。我有一个关于SQL Server2008中的tsql的问题。对于select-where语句,有两种不同形式,
(1)选择某个值和某个其他值之间的位置foo,
(2)选择where foo >=一些值和foo <=一些其他值?我不确定between-and是否总是与使用<=和>= sign相同?
顺便说一句:它们是否总是相同的--甚至对于不同类型的数据(例如比较数值,比较字符串值),如果有人能提供一些文档来证明它们是否总是相同的,我会很感激,这样我就可以从中学到更多。
先谢谢你,乔治
发布于 2010-07-17 09:59:19
是的,它们总是一样的。BETWEEN
的entry in Books Online说
如果
的值大于或等于begin_expression的值且小于或等于end_expression的值,则test_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*/
https://stackoverflow.com/questions/3270982
复制