mysql字符串类型比较问题—app版本号 Posted on 2018-09-27 背景mysql版本号字段类型是varchar,app版本号规则如下: 7.1.1 7.1 7.0.10 7.0.10 7.0.1 7.0 6.9.5 产生的问题是:筛选出<7.9.10版本号,7.9.9,7.9.8等等就不在范围之内 问题解决原理:取每组版本号并向前补0至N位(例子中补10位) X.XX.XXX > 7.9.12 ‘000000000X00000000XX0000000XXX’ > ‘000000000700000000090000000012’ 12345678910SELECT * FROM tableWHERE CONCAT( LPAD( SUBSTRING_INDEX( SUBSTRING_INDEX( version, '.', 1 ), '.', - 1 ), 10, '0' ), LPAD( SUBSTRING_INDEX( SUBSTRING_INDEX( version, '.', 2 ), '.', - 1 ), 10, '0' ), LPAD( SUBSTRING_INDEX( SUBSTRING_INDEX( version, '.', 3 ), '.', - 1 ), 10, '0' ) ) > CONCAT( LPAD( 7, 10, '0' ), LPAD( 9, 10, '0' ), LPAD( 12, 10, '0' ) );