Recenzowanie kodu i instrukcji case ma expression <= 1.
w przeciwieństwie do<= 1
Nie jestem pewien, jaki jest cel tego 1.
. jakieś pomysły?
sql-server
Pete Forester
źródło
źródło
1.
literał jako liczbę (1,0) zamiast liczby całkowitej ze względu na kropkę. Być może zostało to określone w celu dopasowania typu danych wyrażenia (najlepsza praktyka). Osobiście sprecyzowałbym1.0
w tym przypadku.0
kropki dziesiętnej i fakt, żedecimal
ma ona wyższy priorytet niż typ danych, wint
każdym razie pośrednio zostanie w razie potrzeby odrzucony, co sprawiłoby, że pomyślałem, że to raczej błąd w pisaniu niż celowe.Odpowiedzi:
1.
jestNUMERIC
DECIMAL
stałą (lub ), podczas gdy1
jestINTEGER
stałą. W niektórych przypadkach użyteczne jest jawne określenie typu danych, aby uniknąć niepotrzebnej (lub niepożądanej) niejawnej konwersji typu.Zastanów się na przykład
Następnie
select 1/f1 from t
zwraca0
(INTEGER
), podczas gdyselect 1./f1 from t
zwraca0.5
(DECIMAL
).Można założyć, że po lewej stronie porównania w twoim przykładzie znajduje się
DECIMAL
kolumna, a wyraźne określenieDECIMAL
stałej może nieznacznie poprawić wydajność, unikając rzutowania typu niejawnego.źródło