用于在SQL Server中存储Integer和Float值的数据类型

时间:2015-07-22 04:54:32

标签: sql-server

在SQL Server中完全存储Integer,Float值的最佳数据类型是什么。

我需要在一列中存储正常的整数和点(浮点)十进制值。

实施例

ColumnNameValues
15
15.5
12.3
17
19.8

4 个答案:

答案 0 :(得分:0)

如果要以整数存储,它将减少。(点)之后的值,但如果你要使用Float,它将输入所有值,无论是int还是float

declare @t table (ID float)
insert into @t(id)values (15) ,(15.5),( 12.3),( 17),( 19.8)

select * from @t

declare @t table (ID int)
insert into @t(id)values (15) ,(15.5),( 12.3),( 17),( 19.8)

select * from @t

答案 1 :(得分:0)

如果您不需要在DB中正确查看浮点数,则可以将float的4个字节转换为整数并将其存储为整数。如果你想要取回它,请从数据库中读取它,然后再将它转换为浮点数。

如果你没有来自上下文的信息,如果存储的值是整数或浮点数,它会有点棘手,你需要以某种方式限制整数或浮点数,例如“牺牲”一点来识别,它是哪种变化。

答案 2 :(得分:0)

我知道这是一个老问题,但是我遇到了问题...如果您关心1.0应该不同于1 ....我的解决方法效率不高,但是解决了我的问题...在数据库中定义某些列为nvarchar / varchar,并将值存储为string / nvarchar / varchar 当您读取代码中的列时,如果需要进行任何操作,则需要区分浮点数和整型数,请用'。'分隔字符串/ nvarchar / varchar值。这给你一个清单。如果list.count = 1,则为整数;如果list.count = 2,则为浮点数。

        //c#
        string x = "1";
        string y = "1.0";
        string z = "1.1";

        var test = y.Split('.');

        if(test.Count() == 1){
            Console.WriteLine("INTEGER");
        }
        else if(test.Count() == 2){
            Console.WriteLine("FLOAT");
        }

意识到,如果您从用户那里获得了这些值,则在存储值之前要避免任何错误,方法是将它们解析为浮点(“ 1”,“ 1.0”,“ 1.1”,.... float不需要解析为int)...

float floatValue;
if(float.TryParse(value, out floatValue)){
   //input data is OK it could be float or int
}

答案 3 :(得分:0)

在 MySQL 中同时存储整数、浮点值的最佳数据类型是:FLOAT