所以我看到this question有一个很好的答案,但无论如何我想要围捕,而不是无论如何都要四舍五入。在转换int之前向它添加1将不起作用,因为它会将5.0“舍入”到6.0,例如。
那么我应该如何在SQLite中实现ceil
?
答案 0 :(得分:8)
这将更优雅地给你相同的答案:
SELECT CAST(x+1-1e-n AS INT);
(假设您的精度不会超过 n 小数点)
答案 1 :(得分:7)
这个怎么样?
select (case when x = cast(x as int) then cast(x as int)
else 1 + cast(x as int)
end)
答案 2 :(得分:1)
一些有用的答案,我发现此解决方案也非常简单。
select round(column+0.5) from table;
这意味着如果原始数字<0.5,您将始终四舍五入;如果原始数字> 0.5,则始终四舍五入
答案 3 :(得分:-1)
$db->createFunction('ceil', 'ceil', 1);
$db->createFunction('floor', 'floor', 1);
select ceil(\`column`) from table;