我正在尝试连接 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 转换(映射或转换,不确定此处使用的正确动词)为字母或整数?
谢谢, 艾娜。
最佳答案
您可以使用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
,我们就可以使事物对齐。
关于mysql - 通过数据类型不匹配的两列连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43796616/