gpt4 book ai didi

mysql - 在 MySQL 中,有没有办法在对列进行排序之前对其进行修改?

转载 作者:行者123 更新时间:2023-11-29 09:19:45 25 4
gpt4 key购买 nike

我有一个表,其中的字段value是一个varchar(255)。该字段的内容可以多种多样:

  • 1.20 美元
  • $2994
  • $56 + 税(如有必要,可以忽略或截断为 $56)

我构建了一个查询:

SELECT value FROM unnamed_table ORDER BY value

但是,这当然使用 ASCII 字符串比较来对结果进行排序,并且不使用任何数字类型的比较。

有没有一种方法可以真正按值排序而无需将字段类型更改为DECIMAL或其他类型?换句话说,可以在结果排序之前动态修改 value 字段(删除“$”,将值转换为十进制)吗?

最佳答案

您可以对将文本“解析”为十进制的表达式进行排序

SELECT value FROM unnamed_table ORDER BY expression_returning_decimal(value)

您的表达式使用 MySQL 函数从字符串中提取数字,具体取决于您期望它采用的形式(类似于 CAST(value AS DECIMAL(10,2)),但您可能需要处理无关的非数字字符不知何故,因为我不确定如果不删除它们 CAST 会给出什么)。

关于mysql - 在 MySQL 中,有没有办法在对列进行排序之前对其进行修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481259/

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