我已经搜索了这个很棒的论坛并在谷歌上搜索,但无法解决这个问题。
我们有两张桌子(相信我,我与这些桌子无关)。两个表都有一个名为的列eventId.
但是,在一个表中,数据类型为eventId是,float而在另一个表中,它是nvarchar。
我们从table1where eventIis defined as中选择float并将该 Id 保存到table2where eventIdis defined asnvarchar(50)。
由于数据类型不一致,我们在将数据类型转换nvarchar为float.
在不玩弄数据库的情况下,我想强制转换eventId以摆脱此错误。
任何想法我在下面的代码中做错了什么?
SELECT
CAST(CAST(a.event_id AS NVARCHAR(50)) AS FLOAT) event_id_vre,
Run Code Online (Sandbox Code Playgroud)
问题很可能是因为某些行event_id是空的。有两种方法可以解决这个问题:
float为nvarchar,而不是相反- 这种转换将始终成功。这里唯一的问题是文本表示是否不同 - 例如,带有float-as-的表nvarchar使用较少的十进制数字,或者第二种解决方案如下所示:
SELECT
case when a.eventid <> ''
then cast(cast(a.event_id as nvarchar(50)) as float)
ELSE 0.0
END AS event_id_vre,
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64282 次 |
| 最近记录: |