Пересмотр кода и выписки дела expression <= 1.
в отличие от<= 1
Я не уверен, какова цель этого 1.
. есть идеи?
sql-server
Пит Форестер
источник
источник
1.
литерал как числовой (1,0) вместо целого числа из-за точки. Возможно, это было указано для того, чтобы соответствовать типу данных выражения (лучшая практика). Лично я бы уточнил1.0
в этом случае.0
после десятичной точки и тот факт, что константаdecimal
типа данных имеет более высокий приоритет, чемint
константа, будет неявно приведена в любом случае, если потребуется, заставит меня думать, что это скорее ошибка печати, а не преднамеренная.Ответы:
1.
являетсяNUMERIC
(илиDECIMAL
) константой, а1
являетсяINTEGER
константой. В некоторых случаях полезно явно указывать тип данных константы, чтобы избежать ненужного (или нежелательного) неявного преобразования типа.Рассмотрим, например,
Затем
select 1/f1 from t
возвращает0
(INTEGER
), аselect 1./f1 from t
возвращает0.5
(DECIMAL
).Можно предположить, что в левой части сравнения в вашем примере есть
DECIMAL
столбец, и явное указаниеDECIMAL
константы может незначительно улучшить производительность, избегая неявного приведения типов.источник