Pra*_*vin 3 sql-server floating-point
我使用以下查询创建了包含小浮动值的表
create table temp_data (val float)
但是当它给出非常小的值的警告消息时 (e-314)
insert into temp_pce_rank_data values(2.466987305926227e-314)
数据被插入并带有值'0'警告消息是:The floating point value '2.466987305926227e-314' is out of the range of computer representation (8 bytes).
如何在 SQL Server 数据库中存储和检索非常小的值 (E-314)?谢谢
提供的数字类型 ( float, decimal) 都不能存储这么小的数字。您拥有的示例2.466987305926227e-314小于最小的正常双精度浮点数。
如果你想存储这样的数字,我看到两个选项:
使用包含两列的自定义解决方案,一列用于尾数,另一列用于指数。缺点是您必须使用复杂的表达式(即使是加法)来执行所有数学运算符和函数。
使用自定义CLR 用户定义类型。从该页面:
从 SQL Server 2005 开始,您可以使用用户定义类型 (UDT) 来扩展服务器的标量类型系统,从而可以在 SQL Server 数据库中存储 CLR 对象。UDT 可以包含多个元素并且可以具有行为,这将它们与由单个 SQL Server 系统数据类型组成的传统别名数据类型区分开来。
由于 UDT 由整个系统访问,因此它们用于复杂数据类型可能会对性能产生负面影响。复杂数据通常最好使用传统的行和表进行建模。SQL Server 中的 UDT 非常适合以下情况:
日期、时间、货币和扩展数字类型
地理空间应用
编码或加密数据
| 归档时间: |
|
| 查看次数: |
2097 次 |
| 最近记录: |