“表达式<= 1”之间有什么区别?和“表达式<= 1”?


11

审阅代码和案例陈述expression <= 1.相对于<= 1

我不确定的目的1.是什么。有什么想法吗?


3
1.由于句点,SQL Server将文字视为数字(1,0)而不是整数。可能是为了匹配表达式的数据类型而指定的(最佳实践)。就个人而言,我会指定1.0这种情况。
Dan Guzman

0小数点后没有任何字符,decimal并且数据类型优先级比事实高,int因此如果需要,无论如何都将隐式转换常量,这使我认为这很可能是键入错误,而不是故意的。
马丁·史密斯

Answers:


18

1.NUMERIC(或DECIMAL)常数,1而是INTEGER常数。在某些情况下,显式指定常量的数据类型很有用,以避免不必要的(或不希望的)隐式类型转换。

考虑例如

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

然后select 1/f1 from t返回0INTEGER),而select 1./f1 from t返回0.5DECIMAL)。

可能会假设您的示例在比较的左侧有一DECIMAL列,并且显式指定一个DECIMAL常量可以通过避免隐式类型强制转换来稍微提高性能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.