簡體   English   中英

sql:BETWEEN v1和v2

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM