本文共 539 字,大约阅读时间需要 1 分钟。
太忙好久没更新博客了,今天随便写个吧,当做个笔记。
SQL Server在处理数值型的数据中,默认为INT型,以下的问题,可能你会遇到。
--结果为2,可能并非你想要的结果SELECT 5 / 2;--结果为2.5,INT向小数型转换SELECT 1.0 * 5 / 2;--溢出,INT的范围是-2147483648 ~ 2147483647SELECT 65536 * 65536;--溢出,在转换BIGINT前还是INTSELECT CAST(65536 * 65536 AS BIGINT);--INT会向BIGINT转换DECLARE @b BIGINT = 65536;SELECT @b * 65536;--BIGINT型DECLARE @a BIGINT = 65536;SELECT @a * @a;--INT向FLOAT转换DECLARE @c FLOAT = 65536000;SELECT @c * 65536000;--溢出SELECT POWER(2, 31);--正确结果DECLARE @d BIGINT = 2;DECLARE @e BIGINT = 31;SELECT POWER(@d, @e);
数据类型优先级:
转载地址:http://vento.baihongyu.com/