Qual é a diferença entre "expressão <= 1". e "expressão <= 1"?

11

A revisão do código e uma declaração de caso tem expression <= 1.como oposição a<= 1

Não sei ao certo qual é o objetivo 1.. Alguma ideia?

Pete Forester
fonte
3
O SQL Server trata o 1.literal como numérico (1,0) em vez de inteiro devido ao período. Talvez isso tenha sido especificado para corresponder ao tipo de dados da expressão (uma prática recomendada). Pessoalmente, eu especificaria 1.0nesse caso.
Dan Guzman
A falta de qualquer valor 0após o ponto decimal e o fato de decimalter uma precedência de tipo de dados mais alta do que inta constante seria implicitamente convertida de qualquer maneira, se necessário, me faria pensar que provavelmente é um erro de digitação e não deliberado.
Martin Smith

Respostas:

18

1.é uma NUMERIC(ou DECIMAL) constante, enquanto 1é uma INTEGERconstante. Em alguns casos, é útil especificar explicitamente o tipo de dados de uma constante para evitar uma conversão de tipo implícita desnecessária (ou indesejável).

Considere, por exemplo

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

Então select 1/f1 from tretorna 0( INTEGER), enquanto select 1./f1 from tretorna 0.5( DECIMAL).

Pode-se supor que no lado esquerdo da comparação no seu exemplo haja uma DECIMALcoluna, e especificar explicitamente uma DECIMALconstante pode melhorar marginalmente o desempenho, evitando uma conversão implícita de tipo.

mustaccio
fonte