2013-11-23 181 views
2

我有一列toysid這是varchar數據類型在一個表中。也有另一個表具有相同的列toysidint數據類型(我知道我可以修改第一個表的列,但我必須遵循一些過程,以保持它爲varchar)。如何將varchar列值轉換爲int?

我已經寫了下面的查詢加入表:

select study.toysid 
from study 
join concepts on study.toysid = concepts.toysid 

查詢返回錯誤:

Conversion failed wher converting varchar datatype into int

因此,我曾嘗試下面的查詢:

select study.toysid 
from study 
join concepts on convert(int, study.toysid) = concepts.toysid 

我得到了同樣的錯誤。如何轉換它?我在很多網站上搜索過,但我無法獲得解決方案。請任何人都幫忙。

+0

這是因爲你的'study.toysid'中有一個數據不能轉換爲'int'。 –

回答

2

可以省略其中具有非數字的值,然後用整數像下面這樣的投記錄:

select Mystudy.toysid 
from concepts 
    join (Select study.toysid From study WHERe ISNUMERIC(study.toysid)= 1) As MyStudy 
      on convert(int, MyStudy.toysid) = concepts.toysid 
+0

哇!很好,工作很好。非常感謝!!! – viji

+0

歡迎親愛的.. !!!快樂編碼.. !!! – Snehal

2

確保您的toyid列中除數字外沒有其他任何內容。我懷疑該列中還有其他字符而不是數字。一旦確定,請嘗試以下查詢..

select study.toysid 
from study join concepts 
on cast(study.toysid as int) = concepts.toysid 

select study.toysid 
from study join concepts 
on cast(study.toysid as varchar(100)) = cast(concepts.toysid as varchar(100)) 
+0

我已經嘗試了這兩個查詢,但存在相同的錯誤。該列的值爲001,002,003 – viji

+0

請嘗試以下查詢以查找所有不是數字的值。 SELECT toysid FROM YOURTABLE WHERE ISNUMERIC(toysid)= 0 – DarkKnight

相關問題