2012-08-02 43 views
0

我有一個查詢如下:比較VARCHAR和整數在MySQL JOIN子句

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工作以及..

回答

3

如果apvalue只有像「1」,「2」......這樣的值,那麼你可以使用你的第一個查詢,服務器將自己做一些事情。所有值將被轉換爲數字,並且您的ON條件將起作用。

+0

是的,它做到了..它叮噹早些工作的一些其他問題.. – nawfal 2012-08-02 09:21:29