Проблема оператора выбора SQL Server - PullRequest
0 голосов
/ 17 июля 2010

Я использую SQL Server 2008 Enterprise на Windows Server 2008 Enterprise.У меня есть вопрос о tsql в SQL Server 2008. Для оператора select-where есть две разные формы:

(1) выберите где foo между [какое-то значение] и [какое-то другое значение],

(2) выберите где foo> = [какое-то значение] и foo <= [какое-то другое значение]?Я не уверен, всегда ли между-и одинаково использование знака <= и> =?

Кстати: всегда ли они одинаковы - даже для разных типов данных (например, сравнивать числовые значения, сравнивать строкиценится), буду признателен, если кто-нибудь предоставит некоторые документы, подтверждающие, что они всегда одинаковы, чтобы я мог узнать из них больше.

заранее спасибо, Джордж

1 Ответ

6 голосов
/ 17 июля 2010

Да, они всегда одинаковы.Запись в Books Online для BETWEEN говорит

BETWEEN возвращает TRUE, если значение test_expression больше или равно значению begin_expression и меньше или равнозначение end_expression.

Действительно, это легко увидеть, посмотрев планы выполнения.Вы увидите, что 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*/

enter image description here

...