在SQL Server中完全存储Integer,Float值的最佳数据类型是什么。
我需要在一列中存储正常的整数和点(浮点)十进制值。
实施例
ColumnNameValues
15
15.5
12.3
17
19.8
答案 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