2016-09-07 21 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に変換するときに変換に失敗しました

データは、テーブルのこことその下にある同じ数から多分数え切れないほどのものです。

このエラーを回避するにはどうすればよいですか?あなたが同じデータ型であるあなたの ON状態に言及したすべての列をチェック

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 
+0

テーブル構造、サンプルデータ、および予想される結果を投稿する必要があります。つまり、 't_id'と' mi'は異なるデータ型です(単純に 'int'と' varchar'を結合することはできません)... – sgeddes

+0

TMIN.T_IDとtMI.MIの列のデータ型をチェックします。おそらくそれらのうちの1つはvarchar(tMI.MI)であり、その他はint(TMIN.T_ID)です。私は、比較するためにそれらの1つをキャストまたは変換することをお勧めします。 – Nagahornbill

答えて

1

は、私はあなたの両方のテーブルのカラムが異なるデータ型だと思います。

CardNumberをvarchar(実際にはintegerの値)、Miを整数として保存する場合は、以下のようにon条件を変更してみてください。

ON CAST (tCard.CardNumber as INT) = tMI.MI 
1

ようなSQLで キャスト機能を次を使用して

関連する問題