2017-07-06 164 views
0

當我在下面的代碼中輸入最後一個連接時,出現一條錯誤消息,指出「將varchar值3轉換爲數據類型int時轉換失敗。 (味精245,級別16,狀態1,行1)有人可以幫助我嗎?在一張表中,它在我想要與其他表中的另一個號碼加入的號碼前面有奇怪的字符。將Varchar 3轉換爲int

SELECT ca.fdorgunit AS Facility 
, pt.fdmedrecnum AS Account 
, ca.fddos AS DOS 
, ad.fdaddr1 AS [Address] 
, pe.fdssn AS SSN 
FROM OPENQUERY (VISION, 'SELECT * FROM ci.tbcase') AS ca 
LEFT JOIN OPENQUERY (VISION, 'SELECT * FROM de.tbpatient') AS pt 
ON pt.id = ca.fdpatient 
LEFT JOIN OPENQUERY (VISION, 'SELECT * FROM de.tbperson') AS pe 
ON pt.fdperson = pe.fdid 
LEFT JOIN OPENQUERY (VISION, 'SELECT * FROM de.tbaddress') AS ad 
ON ad.id = pe.fdaddress 
WHERE ca.fdcasestatus = 'Performed' 
GROUP BY ca.fdorgunit, ca.fddos, pt.fdmedrecnum, pe.fdssn, ad.fdaddr1 
+0

你能請張貼的數據類型ad.id和pe.address? – Eli

+1

您需要共享那些「奇怪的字符」行... – fhossfel

+0

如果它是一個int值(不含「怪異字符」),您可以將pe.fdaddress強制轉換爲int。但是,如果fdaddress被假定爲索引外鍵,那麼該索引將不再工作(索引是針對原始varchar值的,而不是int)。你應該總是試着設計你的數據庫以在你的表上擁有合適的主鍵和/或外鍵。 – RToyo

回答

0

我覺得您的記錄propabaly在pe.fdaddress一個不是數字 避免這種情況你最好轉換整數爲char 像這樣

SELECT ca.fdorgunit AS Facility 
, pt.fdmedrecnum AS Account 
, ca.fddos AS DOS 
, ad.fdaddr1 AS [Address] 
, pe.fdssn AS SSN 
FROM OPENQUERY (VISION, 'SELECT * FROM ci.tbcase') AS ca 
LEFT JOIN OPENQUERY (VISION, 'SELECT * FROM de.tbpatient') AS pt 
ON pt.id = ca.fdpatient 
LEFT JOIN OPENQUERY (VISION, 'SELECT * FROM de.tbperson') AS pe 
ON pt.fdperson = pe.fdid 
LEFT JOIN OPENQUERY (VISION, 'SELECT * FROM de.tbaddress') AS ad 
ON CAST(ad.id AS varchar(10)) = CAST(pe.fdaddress AS varchar(10)) 
WHERE ca.fdcasestatus = 'Performed' 
GROUP BY ca.fdorgunit, ca.fddos, pt.fdmedrecnum, pe.fdssn, ad.fdaddr1 
相關問題