转换varchar值时转换失败'" ...."'到数据类型int

时间:2016-09-07 04:26:32

标签: sql sql-server

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

我正在运行上面的代码而没有内连接它运行正常。但是一旦我添加了内部联接,就会说它无法转换。

数据是相同的,减去表格中的一些额外内容。

我有什么想法可以解决这个错误吗?

2 个答案:

答案 0 :(得分:1)

检查 ON 条件中提到的所有列的数据类型是否相同。

如果您将CardNumber存储为varchar(实际上是integer值)而Mi存储为整数,请尝试修改您的on条件,如下所示。

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

答案 1 :(得分:0)

我认为您的两个表列都是不同的数据类型,因此您使用以下内容 强制转换在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