Qual è la differenza tra "espressione <= 1". e "espressione <= 1"?


11

La revisione del codice e un'affermazione del caso si expression <= 1.contrappone a<= 1

Non sono sicuro di quale sia lo scopo 1.. qualche idea?


3
SQL Server considera il valore 1.letterale come numerico (1,0) anziché intero a causa del periodo. Forse è stato specificato per abbinare il tipo di dati dell'espressione (una buona pratica). Personalmente, vorrei specificare 1.0in quel caso.
Dan Guzman,

La mancanza di qualsiasi punto 0dopo il punto decimale e il fatto che decimalabbia una precedenza di tipo di dati superiore rispetto a intcosì la costante verrebbe comunque implicitamente lanciata se necessario, mi farebbe pensare che sia probabilmente un errore di battitura piuttosto che intenzionale.
Martin Smith,

Risposte:


18

1.è una NUMERIC(o DECIMAL) costante, mentre 1è una INTEGERcostante. In alcuni casi è utile specificare esplicitamente il tipo di dati di una costante per evitare una conversione di tipo implicita non necessaria (o indesiderabile).

Considera, per esempio

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

Quindi select 1/f1 from trestituisce 0( INTEGER), mentre select 1./f1 from trestituisce 0.5( DECIMAL).

Si potrebbe presumere che sul lato sinistro del confronto nel tuo esempio sia presente una DECIMALcolonna e la specifica esplicita di una DECIMALcostante potrebbe migliorare marginalmente le prestazioni evitando un cast di tipo implicito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.