0

我处于需要将两个表与 Projectnumber 进行比较的情况。两个表都有 ProjectNumber 字段,但一个具有数据类型 INT,另一个具有 VARCHAR(45)。因此,当我尝试运行以下查询时,它也会导致一些不匹配的记录

 Select prj.Projectnumber,ps.ProjectNumber as 'ProjectNumber2'
 from projectlistsearch ps 
 inner join project prj on ps.ProjectNumber= prj.ProjectNumber

这会导致一些正确的记录,但也会导致这样的错误

ProjectNumber     ProjectNumber2
8                 08-809076
11                11-437881
11                11-505934
2007              2007-45750
2011              2011-0A76

我也尝试过类型转换,但没有奏效。

我怎样才能克服这种情况才能获得完全匹配的记录?

谢谢

4

2 回答 2

0

检查转换函数:http ://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_cast

例如:

... WHERE CAST(prnumVarchar AS UNSIGNED INTEGER) = prnumInt;
于 2012-10-24T11:15:07.647 回答
0

我建议将 to 转换INTVARCHAR并比较这两者,因为例如将 a 转换VARCHARINT当文本以十进制数字开头时,只有可解析的前缀部分将转换为 int:

输入:

'08-809076'

可解析前缀:

08

转换成INT

8

反之,则将值与不匹配的VARCHAR'8'进行比较。'08-809076'

于 2012-10-24T11:28:24.367 回答