该问题最有可能是因为某些行的
event_id行为空。有两种方法可以解决此问题:
- 将您转换
float
为nvarchar
,而不是相反-这种转换将始终成功。唯一的问题是文本表示形式是否不同-例如,带有float
-as-的表nvarchar
使用较少的十进制数字,或者 - 在转换之前添加一个条件以检查空ID- 如果某些事件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,



