【发布时间】:2018-05-07 14:25:02
【问题描述】:
(sql初学者)
我遇到了错误
'Error converting data type nvarchar to float.'
这是因为我试图用字符和整数对 nvarchar(10) 列进行四舍五入,显然它不能对字符进行四舍五入。 (我不能用不同的数据类型创建两个单独的列,因为它们都需要在这个列中)
我正在寻找一种方法来舍入 nvarchar 列中的数字,同时返回字符
我正在尝试 CAST/Converts 似乎没有任何效果
我也试过
CASE WHEN ISNUMERIC(Tbl1.Column1) = 1
THEN cast(Round(Tbl1.Column1, 0) AS float)
ELSE Tbl1.Column1 END AS 'Column1'
在选择语句中
我想不出还有什么办法可以解决这个问题!
此列中的示例数据将是
8.1
2
9.0
9.6
A
-
5.3
D
E
5.1
-
【问题讨论】:
-
IsNumeric 在这里并不安全。它返回很多误报。而且您必须将舍入值转换为 varchar,因为您不能在单个列中混合数据类型。
-
投射到
float的目标是什么?您的列数据类型不能同时为float和nvarchar,因此即使在您的情况下将两者分开,它也会在ELSE上失败。
标签: sql sql-server