错误无法将数据类型nvarchar转换为浮点数
问题描述:
我已经搜索了这个伟大的论坛和搜索周围,但无法解决此问题。错误无法将数据类型nvarchar转换为浮点数
我们有两张表(并且相信我,我与这些表无关)。两个表都有一个名为eventId
的列。
但是,在一个表中,eventId
的数据类型是float
,而在另一个表中,它是nvarchar
。
我们正在从table1
选择其中eventI
被定义为float
和保存该标识为table2
其中eventId
被定义为nvarchar(50)
。
由于数据类型的降低,我们得到了错误转换数据类型nvarchar
到float
。
没有与数据库鬼混,我想抛出eventId
摆脱这个错误。
任何想法我做错了下面的代码?
SELECT
CAST(CAST(a.event_id AS NVARCHAR(50)) AS FLOAT) event_id_vre,
答
问题很可能是因为某些行有空的event_id
。有两种方法去解决这个:
-
将您
float
到nvarchar
,而不是周围的其他方式 - 这种转换总是会成功的。这里唯一的问题是,如果文本表示不同 - 比如说,与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,
你读过这一点:http://msdn.microsoft.com/en-us/library/ms191530%28v=sql.105%29 .aspx? – Sybren 2014-11-05 19:40:55