【问题标题】:Compare varchar and integer in MySQL JOIN clause比较 MySQL JOIN 子句中的 varchar 和 integer
【发布时间】:2012-08-02 09:07:20
【问题描述】:

我有一个查询如下:

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 也有效..

【问题讨论】:

    标签: mysql join casting


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 2017-01-31
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      相关资源
      最近更新 更多