Eri*_*c S 7 sql-server sql-server-2014
我今天遇到了一个查询,它做了一些我以前从未见过的事情。它做了这样的事情:
SELECT
MIN(+ - schema_id) AS [WhatInTheWorld?],
MIN(schema_id) AS MinimumID,
MAX(+ - schema_id) AS [Uhhh],
MAX(schema_id) AS MaxID
FROM sys.objects
Run Code Online (Sandbox Code Playgroud)
这给出了以下结果:
WhatInTheWorld? MinimumID Uhhh MaxID
-4 1 -1 4
Run Code Online (Sandbox Code Playgroud)
“+”和“-”究竟是做什么的?
ype*_*eᵀᴹ 11
MIN(+ - schema_id)
被解析为MIN( + (- schema_id) )
which 与 相同MIN(- schema_id)
,所以它(数学上)*与-MAX(schema_id)
. 对于 MAX 也是如此。
*: 在某些边缘情况下,MIN/MAX(-x)
可能会引发错误而- MAX/MIN(x)
不会引发错误(因为否定适用于列的所有值,而仅适用于 MAX/MIN 值)。