将varchar值“”....“'转换为数据类型int时转换失败
问题描述:
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时转换失败
数据是相同的减号,也许在表格中这里和那里有一些额外的。
任何想法如何解决这个错误?
答
我觉得你的两个表列的数据类型不同,所以你使用以下 投在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
答
检查您的ON条件中提到的所有列都是相同的数据类型。
如果要将CardNumber存储为varchar
(实际上它是integer
的值),并将Mi作为整数,请尝试修改如下的条件。
ON CAST (tCard.CardNumber as INT) = tMI.MI
您应该发布您的表格结构,样本数据和预期结果。原因是,你的错误表明't_id'和'mi'是不同的数据类型(你不能简单地加入'int'和'varchar')... – sgeddes
检查列TMIN.T_ID和tMI.MI的数据类型。最有可能的其中之一是varchar(tMI.MI),其他是int(TMIN.T_ID)。我建议,铸造或转换其中一个比较。 – Nagahornbill