【问题标题】:Error converting data type nvarchar to float - nvarchar to float to int将数据类型 nvarchar 转换为浮点数时出错 - nvarchar 将浮点数转换为 int
【发布时间】:2014-04-17 10:26:04
【问题描述】:

我没有太多编写 SQL 查询的经验,我遇到了一个问题。我已将数据表读入临时表 (#Temp_Results),需要在将数据移动到最终表之前更改各种列的格式。 我在下面尝试做的是取一个 nvarchar 列(Oil2)并将其转换为 tinyint 并将结果放入一个新列(Oil4)然后删除 Oil2 - 我意识到我会丢失小数位但那不是问题. CASE 语句旨在捕获任何不是数字的东西,因为原始数据类型是 nvarchar,所以里面可能有任何东西,我只对数字感兴趣。

但是,当我运行代码时,我得到指向“更新”代码行的“将数据类型 nvarchar 转换为浮点数时出错”,我不知道如何绕过它。

你们中的任何人能发现我的菜鸟错误吗?

ALTER TABLE tempdb..#Temp_Results       /*Add new column with datatype of tinyint*/ 
ADD Oil4 tinyint
GO

UPDATE tempdb..#Temp_Results            
SET tempdb..#Temp_Results.Oil4 = CASE 
WHEN ISNUMERIC(tempdb..#Temp_Results.Oil2)=1
THEN CAST(ROUND(CAST(tempdb..#Temp_H_Results.Oil2 as float), 0) AS tinyint)
ELSE NULL
END

ALTER TABLE tempdb..#Temp_H_Results     /*Drop redundant column of data in wrong (nvarchar) format*/
DROP COLUMN Oil2
Go

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    尝试转换为十进制而不是浮点数

    CONVERT(varchar(28), cast(tempdb..#Temp_H_Results.Oil2 as decimal(28,0)))
    

    【讨论】:

      猜你喜欢
      • 2011-05-18
      • 2021-08-08
      • 1970-01-01
      • 2017-03-23
      • 2017-03-15
      • 2017-07-21
      • 2012-02-26
      • 1970-01-01
      相关资源
      最近更新 更多