Eu corri para uma consulta hoje que fez algo que eu não tinha visto antes. Fez algo assim:
SELECT
MIN(+ - schema_id) AS [WhatInTheWorld?],
MIN(schema_id) AS MinimumID,
MAX(+ - schema_id) AS [Uhhh],
MAX(schema_id) AS MaxID
FROM sys.objects
O que dá os seguintes resultados:
WhatInTheWorld? MinimumID Uhhh MaxID
-4 1 -1 4
O que exatamente o "+" e o "-" estão fazendo?
MIN(+ - schema_id)
é analisado comoMIN( + (- schema_id) )
qual é o mesmo queMIN(- schema_id)
, então é (matematicamente) * o mesmo que-MAX(schema_id)
. Da mesma forma para o MAX.*: Existem alguns casos extremos em que o
MIN/MAX(-x)
pode gerar um erro enquanto o- MAX/MIN(x)
não o fará (porque a negação é aplicada em todos os valores da coluna versus apenas no valor MAX/MIN).