我搜索了这个伟大的论坛并用Google搜索但无法解决此问题。
我们有两张桌子(相信我,我与这些桌子无关)。两个表都有一个名为eventId
的列。
但是,在一个表格中,eventId
的数据类型为float
,而另一个表格中的数据类型为nvarchar
。
我们从table1
中选择eventI
定义为float
,并将该ID保存到table2
,其中eventId
定义为nvarchar(50)
由于数据类型的不足,我们将数据类型nvarchar
转换为float
时出错。
在不使用数据库的情况下,我想投出eventId
来摆脱这个错误。
我对下面的代码做错了什么想法?
SELECT
CAST(CAST(a.event_id AS NVARCHAR(50)) AS FLOAT) event_id_vre,
答案 0 :(得分:4)
问题很可能是因为某些行的event_id
为空。有两种方法可以解决这个问题:
float
转换为nvarchar
,而不是相反 - 此转换将始终成功。这里唯一的问题是,如果文字表示不同 - 例如,带有float
的表格 - 因为 - 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,
答案 1 :(得分:0)
将float转换为nvarchar而不是将nvarchar转换为float。当然可以!