2016-09-07 290 views
0
SELECT 
    tMI.MI 
FROM 
    tMI 
LEFT JOIN 
    tCard ON tCard.CardNumber = tMI.MI 
INNER JOIN 
    TMIN on TMIN.T_ID = tMI.MI 
WHERE 
    tCard.CardNumber IS NULL 
    AND tMI.MI IS NOT NULL 

我正在運行上面的代碼,並且沒有內部聯接,它運行良好。但是一旦我添加了內部連接,它就會說它不能轉換。將varchar值「」....「'轉換爲數據類型int時轉換失敗

數據是相同的減號,也許在表格中這裏和那裏有一些額外的。

任何想法如何解決這個錯誤?

+0

您應該發佈您的表格結構,樣本數據和預期結果。原因是,你的錯誤表明't_id'和'mi'是不同的數據類型(你不能簡單地加入'int'和'varchar')... – sgeddes

+0

檢查列TMIN.T_ID和tMI.MI的數據類型。最有可能的其中之一是varchar(tMI.MI),其他是int(TMIN.T_ID)。我建議,鑄造或轉換其中一個比較。 – Nagahornbill

回答

1

我覺得你的兩個表列的數據類型不同,所以你使用以下 在SQL函數一樣

SELECT 
    cast(tMI.MI as varchar) as MI 
FROM 
    tMI 
LEFT JOIN 
    tCard ON tCard.CardNumber = tMI.MI 
INNER JOIN 
    TMIN on TMIN.T_ID = tMI.MI 
WHERE 
    tCard.CardNumber IS NULL 
    AND tMI.MI IS NOT NULL 
1

檢查您的ON條件中提到的所有列都是相同的數據類型。

如果要將CardNumber存儲爲varchar(實際上它是integer的值),並將Mi作爲整數,請嘗試修改如下的條件。

ON CAST (tCard.CardNumber as INT) = tMI.MI 
相關問題