SQL数据类型-建议“未知”数字

时间:2018-08-23 14:28:20

标签: sql sql-server sql-server-2008 sqldatatypes

我正在将一些外部数据引入我的MSSQL服务器。几列传入数据被标记为“数字”(这是一个json文件)。它的大小为数百万行,许多列看起来像decimal (18,2)一样23.33。但是我不能确定会一直这样,实际上有一些23.333或更长的数字(例如23.35555555)会弄乱我的导入。

所以给我的问题是一列将要导入某种数字,但是我不能确定它到底有多少个小数位...我是否必须求助于将我的专栏设为varchar还是我没有想到的通用类型的专栏?

是否有一个最大大小的小数,有点像使用VARCHAR(8000)VARCHAR(MAX)吗?

更新

这是我要输入的number的“数据类型”: https://dev.socrata.com/docs/datatypes/number.html#

根据他们的写作,看起来几乎可以是任何数字: “数字是任意精度,任意小数位数。”

2 个答案:

答案 0 :(得分:2)

我处理此类事情的方法是将原始数据导入到varchar(max)列中的登台表中。

然后将TRY_PARSE()TRY_CONVERT()移到最终目标表中所需的数据类型时使用。

这里的要点是,传入数据的形状不应确定您使用的数据类型。数据类型应根据数据在表中的使用情况确定。而且,如果传入的数据不合适,则有一些方法可以使其适合。

答案 1 :(得分:2)

这些数字代表什么?如果它们只是要显示的值,则可以将float设置为数据类型,就可以了。 但是,如果它们是坐标或货币或绝对精确计算所需的任何内容,则float有时可能会产生舍入问题。然后,您应该使用十进制设置所需的最小精度,然后截断最终的结果。 例如,如果大多数数字都有两位小数,可以确定使用3或4个小数点,但是超过该位数将被删减。