SELECT MIN(+ - Column) 有什么作用?

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 值)。