2017-05-05 78 views
2

我試圖加入一個MySQL數據庫的兩個表一個兩列:連接兩個表由兩列,其中的數據類型不匹配

SELECT ol.utdate, ol.session, dl.utdate, dl.dsession FROM observation_log ol 
LEFT OUTER JOIN diary_log dl ON (ol.utdate = dl.utdate AND ol.session = dl.dsession); 

麻煩的是ol.session是CHAR和DL .dsession是一個TINYINT(4)。兩者之間的對應關係是整數字母表中的字母:

======================= 
ol.session||dl.dsession 
======================= 
A   ||1 
B   ||2 
C   ||3 
... 
======================= 

我如何轉換(映射或投,不知道正確的動詞用在這裏),要麼ol.session或dl.dsession要麼同時爲一個字母還是一個整數?

謝謝, 艾娜。

回答

4

您可以使用MySQL ASCII()功能爲大寫字母從ol.session列轉換爲應符合dl.session列編號:

SELECT 
    ol.utdate, 
    ol.session, 
    dl.utdate, 
    dl.dsession 
FROM observation_log ol 
LEFT OUTER JOIN diary_log dl 
    ON ol.utdate = ol.utdate AND 
     ASCII(ol.session) - 64 = dl.dsession 

注意ASCII('A')回報65,與ASCII('B')返回66,依此類推。所以如果我們從ASCII(ol.session)減去64,我們可以使事情保持一致。

+1

蒂姆,它工作正如廣告,謝謝!一旦網站允許我接受我的答案。謝謝!!! – Aina