提问人:kdickinson 提问时间:3/9/2023 最后编辑:marc_skdickinson 更新时间:3/9/2023 访问量:89
在 SQL Server 中将 VARCHAR 列转换为 FLOAT 会截断数字
Converting VARCHAR column to FLOAT in SQL Server cuts off digits
问:
我正在处理 SQL Server 数据库中的一列,该列从其源(Quickbase 或 Excel 文件)开始,需要以 (出于各种原因,主要是因为它是许多数据库表的主键,需要匹配现有格式)。ProjectID
VARCHAR(255)
FLOAT
问题是,当我将列转换为 using 时,它会切断数字,我无法弄清楚原因。下表显示了实际值的原始状态和转换状态的示例。FLOAT
TRY_CONVERT
VARCHAR(255)
FLOAT
让我感到困惑的是:如果我单独使用左侧的任何一个值,它不会切断数字。当我整列时,它确实切断了数字 - 但仅适用于某些值。TRY_CONVERT
TRY_CONVERT
SELECT TRY_CONVERT(FLOAT, '10189.13808')
结果 10189.13808(预期结果)SELECT TRY_CONVERT(FLOAT, '15336.19001')
结果 15336.19001 (预期结果)SELECT TRY_CONVERT(FLOAT, '13615.1115')
结果 13615.1115 (预期结果)
ProjectID - 原始 VARCHAR(255) | ProjectID - TRY_CONVERT(FLOAT) 整列 |
---|---|
10189.13808 | 10189.1 |
15669.752 | 15669.752 |
4940.19 | 4940.19 |
15336.19001 | 15336.2 |
55.1115 | 55.1115 |
13615.1115 | 13615.1 |
我尝试先将列转换为 ,然后转换为 ,但它产生了相同的结果。我也试过.不幸的是,我无法保留该列,因为数据库中的一些现有进程使用 的 来获取非十进制部分,现在去更改它就会涉及它。DECIMAL(18,6)
FLOAT
TRY_CAST
VARCHAR
FLOOR
ProjectID
如何在不损失比例的情况下获得这些值?FLOAT
答: 暂无答案
评论
float
varchar(255)
123.456.789