我处于需要将两个表与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
我也尝试过类型转换,但没有用。
我如何克服这种情况才能获得完全匹配的记录?
感谢
答案 0 :(得分:0)
检查投射功能:http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_cast
E.g:
... WHERE CAST(prnumVarchar AS UNSIGNED INTEGER) = prnumInt;
答案 1 :(得分:0)
我建议将INT
转换为VARCHAR
并比较这两者,因为例如当文本以十进制数开头时将VARCHAR
转换为INT
,只有可解析的前缀部分才会被转换为int:
输入:
'08-809076'
可解析前缀:
08
转换为INT
8
反过来说,VARCHAR
值'8'
与'08-809076'
进行比较,但不匹配。