gpt4 book ai didi

mysql - 为什么 mysql 没有为 float 的 varchar 返回正确的顺序?

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:34 25 4
gpt4 key购买 nike

我有一个 version 列,它是 varchar 但包含 double 值。当我尝试获取最新(最大)版本时,我得到的结果不正确。但是当我做 min 时,我得到了正确的结果。

包含double的varchar列的排序是如何确定的?

这是我的表的内容;

    mysql> Desc Application;
+---------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| version | varchar(50) | YES | | NULL | |
+---------+------------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)

mysql> select * from Application;
+----+---------+
| id | version |
+----+---------+
| 1 | 0.0.0 |
| 2 | 0.0.1 |
| 3 | 0.0.2 |
| 4 | 0.1.0 |
| 5 | 0.1.1 |
| 6 | 0.1.2 |
| 7 | 1.0.0 |
| 8 | 1.0.1 |
| 9 | 1.1.1 |
| 10 | 8.7.3 |
| 11 | 10.29.0 |
+----+---------+
11 rows in set (0.00 sec)

select max(version) from application;
+--------------+
| max(version) |
+--------------+
| 8.7.3 |
+--------------+
1 row in set (0.00 sec)

mysql> select version from application
-> ORDER BY version DESC
-> LIMIT 1;
+---------+
| version |
+---------+
| 8.7.3 |
+---------+
1 row in set (0.00 sec)

mysql> select min(version) from application;
+--------------+
| min(version) |
+--------------+
| 0.0.0 |
+--------------+
1 row in set (0.00 sec)

最佳答案

忘记这些是 float 的想法。 MySQl 将它们视为字符串,因为这就是您告诉它的内容。

字符顺序排序,8最大,0最小,所以你的结果是正确的。

如果您希望 MySQL 按数字顺序排序,请为其提供数字字段。或者,右对齐并用零填充您的子字段 - 08.07.03 小于 10.29.00

关于mysql - 为什么 mysql 没有为 float 的 varchar 返回正确的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29378149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com