SQL: между V1 и V2
-
21-09-2019 - |
Вопрос
Существует ли разница в порядке 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. Можно с уверенностью догадываться, что большинство серверов, в настоящее время, обеспечивают оптимальную обработку фильтра этого типа, независимо от его формы.
Да, вы правы, это только синтаксический сахар для упомянутой вами конструкции.