比较MySQL JOIN子句中的varchar和integer

时间:2012-08-02 09:07:20

标签: mysql join casting

我的查询如下:

select q.question, e.filename
from question q
join actions a on a.FK_QId = q.PK_Id
join action_params ap on ap.FK_AId = a.PK_Id
join envfile e on e.FK_Qid = ap.value
where e.EnvType = 0

问题是JOIN ON子句e.FK_Qid = ap.value,其中value是varchar而FK_QId是整数。我知道我必须对CASTCONVERT做一些事情,但我尝试失败了:

select q.`question`, e.filename
from question q
join actions a on a.FK_QId = q.PK_Id
join action_params ap on ap.FK_AId = a.PK_Id
join envfile e on CAST(e.FK_Qid as nvarchar(3)) = ap.value
where e.EnvType = 0

基本上value字段会有“1”,“2”等字符串。所以如果我可以执行字符串到字符串比较或int到int转换,它就没问题。底线为"1" = 1"2" = 2,依此类推。

编辑:CAST(e.FK_Qid as char3) = ap.value也有效..

1 个答案:

答案 0 :(得分:3)

如果apvalue只有“1”,“2”等值,那么您可以使用您的第一个查询,服务器将自行完成。所有值都将转换为数字,并且您的ON条件将起作用。