Das Überprüfen von Code und einer case-Anweisung hat expression <= 1.
im Gegensatz zu<= 1
Ich bin mir nicht sicher, was der Zweck des 1.
ist. Irgendwelche Gedanken?
sql-server
Pete Forester
quelle
quelle
1.
Literal aufgrund des Zeitraums als numerisch (1,0) anstelle einer Ganzzahl. Möglicherweise wurde dies angegeben, um dem Datentyp des Ausdrucks zu entsprechen (eine bewährte Methode). Persönlich würde ich1.0
in diesem Fall angeben .0
Nachkommastellen und die Tatsache, dassdecimal
der Datentyp eine höhere Priorität hat alsint
die Konstante, würde bei Bedarf ohnehin implizit umgewandelt, was mich zu der Annahme veranlassen würde, dass es sich eher um einen Tippfehler als um einen absichtlichen handelt.Antworten:
1.
ist eineNUMERIC
(oderDECIMAL
) Konstante, während1
eineINTEGER
Konstante ist. In einigen Fällen ist es nützlich, den Datentyp einer Konstanten explizit anzugeben, um eine unnötige (oder unerwünschte) implizite Typkonvertierung zu vermeiden.Betrachten Sie zum Beispiel
Dann wird
select 1/f1 from t
zurückgegeben0
(INTEGER
), währendselect 1./f1 from t
zurückgegeben wird0.5
(DECIMAL
).Man könnte annehmen, dass sich auf der linken Seite des Vergleichs in Ihrem Beispiel eine
DECIMAL
Spalte befindet, und die explizite Angabe einerDECIMAL
Konstante könnte die Leistung geringfügig verbessern, indem eine implizite Typumwandlung vermieden wird.quelle