Яка різниця між "виразом <= 1". і "вираз <= 1"?


11

Перегляд коду та випадок справи має expression <= 1.протилежність до<= 1

Я не впевнений, яка мета 1.. Будь-які думки?


3
SQL Server розглядає 1.буквене число як числове (1,0) замість цілого з-за періоду. Можливо, це було визначено для відповідності типу даних виразу (найкраща практика). Особисто я б зазначив 1.0у цьому випадку.
Дан Гузман

Відсутність будь-якої 0після десяткової крапки і той факт, що decimalмає більш високий пріоритет типу даних, ніж intтаким чином, константа все-таки неявно відкинеться, змусить мене думати, що це швидше помилка введення тексту, а не навмисна.
Мартін Сміт

Відповіді:


18

1.є NUMERIC(або DECIMAL) постійною, тоді 1як INTEGERконстанта. У деяких випадках корисно конкретно вказати тип даних константи, щоб уникнути зайвого (або небажаного) неявного перетворення типу.

Розглянемо, наприклад

create table t(f1 int);
insert into t values (2);

Потім select 1/f1 from tповертається 0( INTEGER), а select 1./f1 from tповертає 0.5( DECIMAL).

Можна припустити, що в лівій частині порівняння у вашому прикладі є DECIMALстовпець, і чітко вказавши DECIMALконстанту, можна незначно покращити продуктивність, уникаючи неявного відтворення типу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.