一尘不染

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

sql

我已经搜索了这个很棒的论坛并在Google周围搜索,但无法解决。

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

然而,在一个表中,数据类型eventId就是float和在另一个表中,这是nvarchar

我们从选择table1这里eventI被定义为float和保存该ID写入table2其中eventId被定义为nvarchar(50)

作为数据类型descrepancy的结果,我们得到错误转换数据类型nvarcharfloat

在不弄乱数据库的情况下,我想强制使用eventId摆脱该错误。

有什么想法我在下面的代码做错了吗?

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

阅读 375

收藏
2021-03-08

共1个答案

一尘不染

该问题最有可能是因为某些行的event_id行为空。有两种方法可以解决此问题:

  • 将您转换floatnvarchar,而不是相反-这种转换将始终成功。唯一的问题是文本表示形式是否不同-例如,带有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,
2021-03-08