Mysql String - Int比较

时间:2012-10-24 11:12:12

标签: mysql

我处于需要将两个表与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

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

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

感谢

2 个答案:

答案 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'进行比较,但不匹配。