十六进制字符串上的Mysql max

标签 mysql hex max

我在对以 varchar(25) 格式保存的十六进制值使用 max 运算符时遇到问题。

数字是这样的:

0
1
0A
0F
FF
10A

现在如果我做这样的事情:

SELECT MAX(CONV(number, 16, 10)) as number FROM `numbers` WHERE 1

我得到 FF (255) 而不是我期望的 10A (266)

有什么问题?它有不同的长度吗?但是为什么它对 0 和 FF 有效呢?有提示就好了!

提前致谢。

最佳答案

来自文档:http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_conv

Converts numbers between different number bases. Returns a string representation of the number N, converted from base from_base to base to_base.

conv 的结果总是一个字符串。如果您的 to_base 是 10,它仍然会生成一个字符串,即使您认为它应该是一个数字是有意义的。

maxing 一个 varchar 列时,mysql 可以做一些奇怪的事情,但我个人并不知道所有的细节。与B树有关。请参阅此资源。 http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html .奇怪的是那个页面上有关于这个问题的信息,但这就是原因。

关于十六进制字符串上的Mysql max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786334/

相关文章:

php - 如何在mysql codeigniter php中使用select来计算匹配的关键字?

ios - byteArray to Hex NSString - 添加了一些错误的十六进制内容

MySQL选择分组中的最大记录

java - 尝试获取 2 个 arrayList 并将它们相乘并将新值存储到新的 arrayList 中以查找最小值/最大值

javascript - JavaScript 中的 Math.max 函数

java.sql.SQLException : Parameter index out of range (1 > number of parameters, 这是 0) 错误

mysql - Spring-data-jpa 实体是否已由 @EmbeddedId 字段索引?

MySQL乘法子查询结果

c - 使用十六进制格式说明符打印

c - 通过地址连接 DS18B20