kni*_*ttl 5 sql-server between syntactic-sugar
在SQL Server上的BETWEEN查询中,v1和v2的顺序是否有差异?
SELECT *
FROM table
WHERE col BETWEEN v1 AND v2
Run Code Online (Sandbox Code Playgroud)
如果v1大于v2,目前我没有得到任何结果.这只是语法糖吗?
col >= v1 AND col <= v2
Run Code Online (Sandbox Code Playgroud)
或者它真的取两者之间的所有价值?根据我目前的观察,我猜这是第一种情况.
Tom*_*ter 11
SQL Server 2008:
select 1
where 5 between 1 and 7
Run Code Online (Sandbox Code Playgroud)
1结果
select 1
where 5 between 7 and 1
Run Code Online (Sandbox Code Playgroud)
0结果
基于这些结果,以及Postgre文档 我会假设ANSI标准如下(虽然我找不到该文档).
a between x and y
==
a >= x AND a <= y
Run Code Online (Sandbox Code Playgroud)
更新:
SQL-92规范说(引用):
"X BETWEEN Y AND Z" is equivalent to "X>=Y AND X<=Z"
Run Code Online (Sandbox Code Playgroud)
mjv*_*mjv 11
是! BETWEEN谓词中参数的顺序.并且,是的,这是[主要] AND-ed比较形式的语法糖.
上面的"大多数"来自这样一个事实:虽然在逻辑上等价,但是这两个表达式可能(可能在过去......)在某些SQL服务器上接收到不同的查询计划.可以肯定的是,现在大多数服务器都提供这种类型的过滤器的最佳处理,无论其形式如何.
| 归档时间: |
|
| 查看次数: |
4762 次 |
| 最近记录: |