[英]sql: BETWEEN v1 AND v2
在SQL Server上的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文檔我會假設ANSI標准如下(雖然我找不到該文檔)。
a between x and y
==
a >= x AND a <= y
更新:
SQL-92規范說(引用):
"X BETWEEN Y AND Z" is equivalent to "X>=Y AND X<=Z"
是! BETWEEN謂詞中參數的順序。 並且,是的,這是[主要] AND-ed比較形式的語法糖。
上面的“大多數”來自這樣一個事實:雖然在邏輯上等價 ,但是這兩個表達式可能(可能在過去......)在某些SQL服務器上接收到不同的查詢計划。 可以肯定的是,現在大多數服務器都提供這種類型過濾器的最佳處理,無論其形式如何。
是的,你是對的,它只是你提到的構造的語法糖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.