从nvarchar到float的转换不起作用

时间:2013-12-12 22:56:56

标签: sql sql-server-2008 type-conversion

由于从nvarchar转换为float时出错,我无法使以下查询生效;我需要将theData字段转换为float以使其舍入,但数据最初是NVARCHAR(20),因为该列也包含字符数据。我已经尝试将每个数据实例转换为浮动,但它仍然没有工作,有人能告诉我我错过了什么吗?

UPDATE tblData SET tblData.theNumericData = CASE WHEN IsNumeric([theData]) = 1 
THEN Round(Convert(float, [theData]),(Len([theData])-Charindex('.',[theData]))) 
ELSE Null END 
WHERE tblData.theFlag =1;

我尝试了以下两种变体......

UPDATE tblData SET tblData.theNumericData = CASE WHEN IsNumeric([theData]) = 1 
THEN Round(Convert(float, [theData]),(Len(Convert(float, [theData]))-
Charindex('.',Convert(float, [theData])))) 
ELSE Null END 
WHERE tblData.theFlag =1;

和...

UPDATE tblData SET tblData.theNumericData = CASE WHEN IsNumeric([theData]) = 1 
THEN Convert(nvarchar(20),Round(Convert(float, [theData]),(Len(Convert(float, 
[theData]))- Charindex('.',Convert(float, [theData]))))) ELSE Null END 
WHERE tblData.theFlag =1;

1 个答案:

答案 0 :(得分:0)

无法回答这个问题,因为我们不知道你得到的错误但是...你应该把案子移到哪里......它会让它更具可读性。

UPDATE tblData 
SET tblData.theNumericData = Convert(float, [theData])
WHERE IsNumeric([theData]) = 1 AND tblData.theFlag =1;