Вопрос

Существует ли разница в порядке v1 и v2 в междуне SQL Server?

SELECT *
  FROM table
 WHERE col BETWEEN v1 AND v2

В настоящее время я не получаю никаких результатов, если V1 больше, чем V2. Это единственный синтаксический сахар для

col >= v1 AND col <= v2

Или это действительно занимает все значения между ними? На моих нынешних наблюдениях я думаю, это первый случай.

Это было полезно?

Решение

SQL Server 2008:

select 1 
where 5 between 1 and 7

1 результат

select 1 
where 5 between 7 and 1

0 результатов

На основе этих результатов и Postgre Docs Я бы предположил, что стандарт ANSI выглядит следующим образом (хотя я не могу найти этого DOC).

a between x and y
==
a >= x AND a <= y

ОБНОВИТЬ:

SQL-92 Spec говорит (цитата):

"X BETWEEN Y AND Z" is equivalent to "X>=Y AND X<=Z"

Другие советы

Да! Порядок аргументов в отношении предиката. И, да, это [в основном] синтаксический сахар для формы сравнения и ED.

«В основном», выше, происходит от того, что пока Логически эквивалент, два выражения могут (вероятно, в прошлом ...) получить отдельный план запроса на некоторых серверах SQL. Можно с уверенностью догадываться, что большинство серверов, в настоящее время, обеспечивают оптимальную обработку фильтра этого типа, независимо от его формы.

Да, вы правы, это только синтаксический сахар для упомянутой вами конструкции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top