gpt4 book ai didi

mysql - 转换为 Float 返回 ActiveRecord::StatementInvalid: Mysql2::Error

转载 作者:行者123 更新时间:2023-11-29 07:03:51 24 4
gpt4 key购买 nike

所以我在 Rails 4.2.7 中执行以下操作

@product.reviews.select('CAST(answer_1 AS FLOAT) AS answer_1')

不幸的是,这会返回

ActiveRecord::StatementInvalid: Mysql2::Error: 
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near
'FLOAT) AS answer_1 FROM `reviews` WHERE `reviews`.`product_id` = 1' at line 1:
SELECT CAST(answer_1 AS FLOAT) AS answer_1
FROM `reviews` WHERE `reviews`.`product_id` = 1

最佳答案

显然 MySQL 的 cast 函数不将 float 理解为数据类型。 fine manual告诉你看convert对于类型,列表中没有 float

MySQL 的 cast 确实支持 decimal(m,n) 但您必须自己选择适当的小数位数和精度值。或者,如果整数合适,您可以使用 cast(answer_1 assigned)cast(answer_1 as unsigned)

如果您实际上是在求平均值并且 answer_1 已经是一个数字,那么您无需在 avg 处进行任何转换返回其浮点值(但文档当然没有明确说明这一点)。

您还可能会遇到一些问题,因为您的列别名:

avg(answer_1) as answer_1

与现有列同名。 ActiveRecord 可能会对名称感到困惑,并尝试将平均值转换为 answer_1 列的值。使用不同的名称应该效果更好。

关于mysql - 转换为 Float 返回 ActiveRecord::StatementInvalid: Mysql2::Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42474246/

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