2016-05-26 67 views
0

我可以從表中獲取數據,但得到低於錯誤的數據。數據類型轉換問題

Msg 245,Level 16,State 1,Line 1將 varchar值「0 0」轉換爲數據類型int時轉換失敗。

下面是我使用

enter image description here

+0

你有一個varchar。它包含3個字符 - 兩個用空格分開的「0」。沒有一種明智的方法將其轉換爲「int」。這就是錯誤告訴你的,這就是我們可以告訴你的 - 你需要弄清楚哪些列包含這些數據,這些數據是否有效,爲什麼要將它轉換爲一個'int',如果這是一個明智的轉換,那麼您希望將其轉換爲什麼實際值(如果需要,還指定其他可能的輸入和預期輸出)。我們不能爲你做這些事情。 –

+0

基表中沒有這種類型的數據。另外,當我刪除group by子句的case語句時,同樣工作正常 – user3304978

+0

拒絕數據存在不是解決問題的健康策略。作爲提示,數據可能位於以下列之一 - currentbalance,highcredit_sanctionedamount,mob,amountoverdue或customerid - 這些是在查詢中明顯轉換爲int的位置使用的列。 –

回答

0

'0 0' 的代碼是不是一個整數。這就是錯誤發生的原因。兩個零之間的空格使其成爲無效整數。

+0

在基準表 – user3304978

+0

中沒有這種類型的數據出現在錯誤的確切位置。將您的代碼添加爲文本。 –

+0

group by clause的case語句,因爲當我刪除該部分時,同樣工作正常 – user3304978

0

fetch into varchar變量。然後檢查值並重新分配給int變量。 例如 DECLARE @tmpVal VARCHAR, @intVal INT ... 讀取到@tmpVal 如果(@tmpVal = '0 0') SET @intVal = 0 別的 SET @intVal = CAST(@tmpVal作爲int)