我正在尝试将我的数据库字段VARCHAR(4)
从FLOAT
. 这些字段中的某些值可能不是数字,因为这些字段之前没有任何验证。我的主要目标是以浮点格式转换任何integer
或decimal
值并保存在新的数据库字段中。对于这个过程,我使用INSERT SELECT STATEMENT
从旧表到新表。到目前为止,我有这行代码用于我的转换:
CASE WHEN LEN(LTRIM(RTRIM(hs_td2))) <> 0 AND ISNUMERIC(hs_td2) = 1 THEN CAST(LTRIM(RTRIM(hs_td2)) AS float) ELSE NULL END AS hs_td2
第一步,我修剪该值,然后检查它是否为数字,然后转换为浮点数,否则设置为 NULL。使用上面的代码,我在 Microsoft Studio 中收到此错误消息:
Msg 8114, Level 16, State 5, Line 13
Error converting data type varchar to float.
第 13 行是我SELECT
声明的开始。然后我也尝试了这种转换:
CASE WHEN LEN(LTRIM(RTRIM(hs_td2))) <> 0 AND ISNUMERIC(hs_td2) = 1 THEN CONVERT(FLOAT, LTRIM(RTRIM(hs_td2))) ELSE NULL END AS hs_td2
我得到了同样的错误信息。我的字段中的值可能是这样的:
10 或 5 或 -10 或 0.9 或 11.6 或 -11.89 等等......
我想知道是否isNumeric()
是我应该使用的最佳功能以及为什么我的代码会产生上面列出的错误消息?
如果有人可以提供帮助,请告诉我。谢谢!