2015-05-11 47 views
0

我有具有以下結構的表:轉換溢出了一個int列。 Witouth轉換()或鑄造()

enter image description here

在MGDCOCRE和MGDCODEB列具有相似的價值觀,以 '2158890000905' '2122190000905' ...

當試圖運行一個簡單UPDATE或SELECT(EG:選擇從MGDMOCOT MGDIDENT其中MGDIDPAG不爲空並且mgdcocre = 1)在該表中示出了錯誤消息:

將varchar值「2158890的轉化000397'溢出了一個int列。

這個問題的可能解決方案是什麼?

感謝的

+3

'和mgdcocre ='1'' < - 兩個滴答是解決方案。 – Alexander

+0

您需要發佈查詢 - 查詢中的某些內容試圖隱式地將值轉換爲數字。 –

回答

1
select MGDIDENT 
from MGDMOCOT 
where MGDIDPAG is not null and mgdcocre=1 

什麼是SQL Server的在這裏做的?現在,mgdcocre是varchar,但1是整數。因此,SQL Server將mgdcocre列中的所有變量隱式轉換爲整數,以便與1進行整數比較。這會失敗,因爲至少有一個變量表示轉換爲整數的數字太大。

解決方案:

select MGDIDENT 
from MGDMOCOT 
where MGDIDPAG is not null and mgdcocre='1' 

在這裏,你比較兩個VARCHAR處理,因此無需轉換。

+0

我的眼睛沒有被注意到。謝謝! – nori