我今天遇到了一个查询,它做了一些我以前从未见过的事情。它做了这样的事情:
SELECT
MIN(+ - schema_id) AS [WhatInTheWorld?],
MIN(schema_id) AS MinimumID,
MAX(+ - schema_id) AS [Uhhh],
MAX(schema_id) AS MaxID
FROM sys.objects
结果如下:
WhatInTheWorld? MinimumID Uhhh MaxID
-4 1 -1 4
“+”和“-”到底在做什么?
MIN(+ - schema_id)
被解析为MIN( + (- schema_id) )
which is the same asMIN(- schema_id)
,所以它(数学上)*与 相同-MAX(schema_id)
。MAX 也是如此。*: 在某些边缘情况下,
MIN/MAX(-x)
可能会引发错误而- MAX/MIN(x)
不会引发错误(因为否定应用于列的所有值而不是仅应用于 MAX/MIN 值)。