请教为何这样的表达式结果始终为0
SELECT   cast((1/3)as   float)as   sdc 
 SELECT   convert(float,(1/3))as   sdc 
 SELECT   (1/3)   as   sdc   
 我就是想不通为何这样的表达式结果始终为0
------解决方案--------------------SELECT cast((1/3)as float)as sdc 
 先进性整数除法1/3=0,再cast   
 SELECT convert(float,(1/3))as sdc 
 一样 
 SELECT (1/3) as sdc 
 一样   
 应该   
 SELECT cast((1.0/3)as float)as sdc   
 SELECT convert(float,(1.0/3))as sdc   
 SELECT (1.0/3) as sdc   
------解决方案--------------------或者 
 SELECT cast(1 as float)/3 as sdc 
 SELECT convert(float,1)/3))as sdc 
------解决方案--------------------原因是sql server的除法是默认其结果的精度为被除数的精度。楼主的例子中被除数均为1,其精度为整数,所以结果都为0。
------解决方案--------------------1/3是用整型进行运算的,结果为0 
 要在运算之前对1或者3中的一个进行强制类型转化成FLOAT的就有正确的结果了