gpt4 book ai didi

mysql 最大行为与 varchar 字段中的数值

转载 作者:可可西里 更新时间:2023-11-01 06:31:35 25 4
gpt4 key购买 nike

我们有一个包含键和值的数据库表,其中值可以是 varchar 字段中的任何内容。这些值是关于商品的属性,其中一个属性是价格。

为了为价格创建一个选择字段,我使用了 Max() 函数来查找值列中的最大值,这似乎可行。

然后当我们得到超过 100 英镑的价格时,它们开始不会作为最大值返回。我知道这是因为它是一个字符串值而不是数字。

当运行像 select max(value) from attributes where value > 100 这样的命令时会出现混淆,因为现在该语句识别出 101 > 100 但 99 不是,所以返回 101 作为最大值,但是如果没有 where value > 100 子句,99 将被视为 > 101。为什么 > 100 子句可以用作数字比较,而 max 却不能?

发生这种情况是否有原因?

最佳答案

不要将 varchar 与 numeric 混合使用,
idea solution 只存储数字供 max 聚合函数使用,
或者

max( cast(value as unsigned) )

当您执行 MAX 时,是对字符串的强制转换。
当您进行比较时,是对数字的转换。

原因?
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_max
(它返回最大字符串值)

关于mysql 最大行为与 varchar 字段中的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7306778/

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