1

i am having issues using the max operator on a hex value saved in varchar(25) format.

The numbers are like this:

0
1
0A
0F
FF
10A

Now if i do something like this:

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

i get FF (255) instead of what i would expect to be 10A (266)

What's the problem? Is it with the different lengths? But why does it work for 0 and FF then? A hint would be great!

Thanks in advance.

4

1 回答 1

1

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

在不同的数字基数之间转换数字。返回数字 N 的字符串表示形式,从基础 from_base 转换为基础 to_base。

的结果conv始终是一个字符串。如果你to_base是 10,即使你认为它应该是一个数字,它仍然会产生一个字符串。

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

于 2013-07-22T19:45:47.860 回答