Ich bin heute auf eine Abfrage gestoßen, die etwas getan hat, was ich vorher noch nicht gesehen habe. Es hat ungefähr so etwas gemacht:
SELECT
MIN(+ - schema_id) AS [WhatInTheWorld?],
MIN(schema_id) AS MinimumID,
MAX(+ - schema_id) AS [Uhhh],
MAX(schema_id) AS MaxID
FROM sys.objects
Welches ergibt die folgenden Ergebnisse:
WhatInTheWorld? MinimumID Uhhh MaxID
-4 1 -1 4
Was genau machen die "+" und "-"?
sql-server
sql-server-2014
Eric S.
quelle
quelle
Antworten:
MIN(+ - schema_id)
wird analysiert alsMIN( + (- schema_id) )
was das gleiche ist wieMIN(- schema_id)
, also ist es (mathematisch) * das gleiche wie-MAX(schema_id)
. Ebenso für den MAX.*: Es gibt einige
MIN/MAX(-x)
Randfälle, in denen ein Fehler auftreten kann, während dies- MAX/MIN(x)
nicht der Fall ist (da die Negation in allen Werten der Spalte gegenüber nur dem MAX / MIN-Wert angewendet wird).quelle
MIN(-x)
ist fast identisch mit-MAX(x)
, aber es gibt einige Randfälle, in denen sie unterschiedlich sind. Siehe sqlfiddle.com/#!18/497cc/5 vs sqlfiddle.com/#!18/497cc/4