微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

动态比较 MySQL 中的版本号

如何解决动态比较 MySQL 中的版本号

我想像这样比较 MysqL 中的不同版本:

select * from version_table where version > 5.2.9

version 列可以具有 5.2.8、5.2.11、5.2.9.2、5.3 之类的值

目前上面写的 select 不返回值为 '5.2.11' 的行

我看到很多解决方案在版本之间进行静态比较,所有版本都具有相同的结构,例如 X.XX 或 X.XX.XX 但是如果我的所有版本都有不同的结构并且在 X.XX、X 之间有所不同怎么办.XX.XX 和 X.XX.XX.XX?

解决方法

发生这种情况是因为您比较的是 VARCHAR 数据类型,而不是 INT

比较数字数据类型时,9 小于 11。 但是当你比较时,我会说,字符串数据类型就不是这样了。因为 5.2. 在任何情况下都是相同的,它会再次比较 9 和 11,所以基本上它会比较第一个字符,这意味着它比较 9 和 1。当你猜测 1 时,它小于 9,如果你尝试 {{ 1}} 它会给你 where version < 5.2.9

注意:这个 5.2.11 查询在实际逻辑上是不正确的。

也许可以拆分成更多列的解决方案,例如 wheremajor versionminor versionbuild version 或您想命名的任何内容

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。