2014-11-05 169 views
2

我已经搜索了这个伟大的论坛和搜索周围,但无法解决此问题。错误无法将数据类型nvarchar转换为浮点数

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

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

我们正在从table1选择其中eventI被定义为float和保存该标识为table2其中eventId被定义为nvarchar(50)

由于数据类型的降低,我们得到了错误转换数据类型nvarcharfloat

没有与数据库鬼混,我想抛出eventId摆脱这个错误。

任何想法我做错了下面的代码?

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

你读过这一点:http://msdn.microsoft.com/en-us/library/ms191530%28v=sql.105%29 .aspx? – Sybren 2014-11-05 19:40:55

回答

3

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

  • 将您floatnvarchar,而不是周围的其他方式 - 这种转换总是会成功的。这里唯一的问题是,如果文本表示不同 - 比如说,与float -as- nvarchar表使用较少的十进制数字,或
  • 添加的条件转换之前检查空的标识 - 这可能不是,如果一些工作的事件ID是非空字符串,但它们不是可以浮动转换的(例如,在字段中有一个单词而不是数字)。

第二个解决方案是这样的:

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