【问题标题】:Cast syntax to convert a sum to float将总和转换为浮点数的强制转换语法
【发布时间】:2015-02-26 06:55:37
【问题描述】:

使用 PostgreSQL 9.3,我想将计算值转换为数据类型float

我的第一次尝试:

SELECT float(SUM(Seconds))/-1323 AS Averag;

给我这个错误:

syntax error at or near "SUM"

我的第二次尝试:

SELECT to_float(SUM(Seconds))/-1323 AS Averag;

给我这个错误:

 function to_float(bigint) does not exist

【问题讨论】:

    标签: sql postgresql casting type-conversion postgresql-9.3


    【解决方案1】:

    我几乎在所有地方都使用速记转换语法:

    SELECT sum(seconds)<b>::float</b> / -1323 AS averag;

    更多细节:

    【讨论】:

    • 是的!太感谢了。但是什么是最好的投射方式。是使用:: 还是使用CAST
    • @MAK:两者都是一样的。我almost总是使用更短更清晰的(IMO)::target_type。按照我的问题和此评论中的链接,您会找到所有要知道的信息。
    • 对于这种情况,“浮点”是否与“双精度”相同?
    • 我的意思是,它是 8 字节吗?
    • @Kokizzu:是的。 float = float8 = double precisionDetails in the manual here.
    【解决方案2】:

    您需要使用cast 语法:

    SELECT CAST (SUM(Seconds) AS FLOAT)/-1323 AS Averag;
    

    【讨论】:

    • CASTCONVERT有什么区别?
    • 在 PostgreSQL 中,cast 用于类型转换(例如,intfloat,就像本例那样),convert 用于更改字符串编码。
    【解决方案3】:

    这不是精确的转换,而是完成这项工作的技巧 :) 并且几乎适用于任何语言。

    SELECT SUM(Seconds)/-1323.0 AS Averag;

    SELECT SUM(Seconds)*1.0/-1323 AS Averag;

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2016-08-05
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多