我正在尝试将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转换(映射或强制转换,不确定要使用的正确动词)是字母还是整数?
谢谢, 艾娜。
答案 0 :(得分: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,依此类推。因此,如果我们从64
中减去ASCII(ol.session)
,我们就可以使事情保持一致。