在SQL Server上的BETWEEN查詢中,v1和v2的順序有差異嗎?sql:BETWEEN v1和v2
SELECT *
FROM table
WHERE col BETWEEN v1 AND v2
目前我沒有得到任何結果,如果v1比v2大。這只是語法糖
col >= v1 AND col <= v2
還是它真的採取所有值之間的兩個?根據我目前的觀察,我想這是第一個案例。
在SQL Server上的BETWEEN查詢中,v1和v2的順序有差異嗎?sql:BETWEEN v1和v2
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標準如下(雖然我找不到那個文檔)。
a between x and y
==
a >= x AND a <= y
UPDATE:
的SQL-92規範說(報價):
"X BETWEEN Y AND Z" is equivalent to "X>=Y AND X<=Z"
是的! BETWEEN謂詞中的參數順序。 而且,是的,這是[主要]用於AND-ed對比表的語法糖。
的「多數」,上述來自於一個事實,雖然邏輯上等同,兩人的表情可以(可能在過去...)獲得一定的SQL服務器上的獨立的查詢計劃。現在大多數服務器都可以提供這種類型的過濾器的最佳處理,無論其形式如何,這是一個安全的猜測。
是的,你是對的,它是否只是你提到的構造的語法糖。
並簽出「選擇7在7和1之間7」 - 真棒! – 2009-10-15 14:50:56
這些示例在MySQL – 2013-03-29 14:06:29
(您必須插入'from dual'來使它們工作)在語法上不是有效的 – 2013-03-29 14:16:14