在什么情况下MySQL会将类型转换为TINYINT?我知道mysql DDL中的BOOL或BOOLEAN类型会自动转换为TINYINT(1)for true或false。我正在分析一个数据库,它在一个表中的字段上有一个varchar(16)类型,而在另一个表上的同一个字段上有tinyint(4)?例如,t1.name varchar(15)和t2.name tinyint(4),其中t1.name = t2.name。
答案 0 :(得分:1)
不要依赖隐式类型转换,手动进行数据类型分析:
首先让我们看看MySQL认为数据的最佳col-type。运行
SELECT * FROM table PROCEDURE Analyse()
通过说
进一步分析您的数据 SELECT * FROM table WHERE varcharCol NOT REGEXP '^[0-9].*$'
获取varcharCol中的所有非数字值。如果没有,你最终必须检查不同MySQL类型here的值范围。
然后您就可以转换varcharCol,例如到TINYINT。