2014-11-05 177 views
2

我已經搜索了這個偉大的論壇和搜索周圍,但無法解決此問題。錯誤無法將數據類型nvarchar轉換爲浮點數

我們有兩張表(並且相信我,我與這些表無關)。兩個表都有一個名爲eventId的列。

但是,在一個表中,eventId的數據類型是float,而在另一個表中,它是nvarchar

我們正在從table1選擇其中eventI被定義爲float和保存該標識爲table2其中eventId被定義爲nvarchar(50)

由於數據類型的降低,我們得到了錯誤轉換數據類型nvarcharfloat

沒有與數據庫鬼混,我想拋出eventId擺脫這個錯誤。

任何想法我做錯了下面的代碼?

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

你讀過這一點:http://msdn.microsoft.com/en-us/library/ms191530%28v=sql.105%29 .aspx? – Sybren 2014-11-05 19:40:55

回答

3

問題很可能是因爲某些行有空的event_id。有兩種方法去解決這個:

  • 將您floatnvarchar,而不是周圍的其他方式 - 這種轉換總是會成功的。這裏唯一的問題是,如果文本表示不同 - 比如說,與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, 
相關問題