gpt4 book ai didi

MySQL : Use IF in TRUNCATE

转载 作者:行者123 更新时间:2023-11-29 05:52:13 25 4
gpt4 key购买 nike

这是简化的查询。

SELECT `a`, TRUNCATE(`b` / 1000, 3) AS `b`
FROM (
...
) AS `m`
GROUP BY `a`
ORDER BY `a`

我想做的是根据 b 的值更改小数位数(实际为 3)。

所以我尝试了这个:

SELECT `a`, TRUNCATE(`b` / 1000, IF(`b` < 10, 2, 3)) AS `b` ...

还有这个

SELECT `a `, IF(`b ` < 10, TRUNCATE(`b ` / 1000, 2), TRUNCATE(`b ` / 1000, 3)) AS `b `

如果 b 小于 10,我需要 3 位小数,否则为 2

但这好像不行……

资源:https://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html#function_if

最佳答案

只需更改您在查询中输入的值位置

 SELECT `a `, IF(b  < 10, TRUNCATE(b  / 1000, 3), TRUNCATE(b  / 1000, 2)) 

作为b

if(a<1,2,3) 表示如果 a<1 那么 2 将作为结果中的值出现,因此您必须切换值的位置

使用round

SELECT a , IF(b  < 10, round((b  / 1000), 2), round((b  / 1000), 3) ) AS b 

ROUND() 函数将数字四舍五入到指定的小数位数。

示例 SELECT ROUND(345.156, 2); 结果 = 345.16

     SELECT ROUND(345.156, 2);  result = 345.156

如果您不想要 round,那么在 b 值小于 10 的情况下 TRUNCATE 将显示 0.00,那么不工作是什么意思?

当b<10时你需要小数点后3位所以你必须改变你的查询结果的位置

关于MySQL : Use IF in TRUNCATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52925733/

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