无法将数据类型nvarchar转换为float时出错

时间:2014-11-05 19:37:01

标签: sql sql-server

我搜索了这个伟大的论坛并用Google搜索但无法解决此问题。

我们有两张桌子(相信我,我与这些桌子无关)。两个表都有一个名为eventId的列。

但是,在一个表格中,eventId的数据类型为float,而另一个表格中的数据类型为nvarchar

我们从table1中选择eventI定义为float,并将该ID保存到table2,其中eventId定义为nvarchar(50)

由于数据类型的不足,我们将数据类型nvarchar转换为float时出错。

在不使用数据库的情况下,我想投出eventId来摆脱这个错误。

我对下面的代码做错了什么想法?

SELECT 
    CAST(CAST(a.event_id AS NVARCHAR(50)) AS FLOAT) event_id_vre,

2 个答案:

答案 0 :(得分:4)

问题很可能是因为某些行的event_id为空。有两种方法可以解决这个问题:

  • 将您的float转换为nvarchar,而不是相反 - 此转换将始终成功。这里唯一的问题是,如果文字表示不同 - 例如,带有float的表格 - 因为 - nvarchar使用较少的十进制数字,或
  • 添加条件以在转换前检查空ID - 如果某些事件ID是非空字符串,但是它们也不可以浮点转换(例如,那里&#) 39;字段而不是数字。

第二种解决方案如下:

SELECT 
     case when a.eventid <> '' 
            then cast(cast(a.event_id as nvarchar(50)) as float) 
          ELSE 0.0 
     END AS event_id_vre,

答案 1 :(得分:0)

将float转换为nvarchar而不是将nvarchar转换为float。当然可以!