如何使用PostgreSQL更改DML中计算属性的数据类型?

问题描述 投票:1回答:2

知道可以使用SQL数据定义语言(DDL)服务器Postgres(SP):

  • 创建
  • ALTER
  • 下降

对于SQL数据操作语言(DML)SP:

  • 选择
  • 插入
  • UPDATE
  • 删除

当我们制作一个SELECT时,我们投射的属性来自DDL中建立的数据类型。当使用相同类型的2个属性执行操作以生成在SELECT中计算的属性时,类型将与操作数的类型相同,但我需要更改它。

我的问题是我想计算两种类型的数据bigint之间的平均值:A / B * 100但是当我做A / B时我在计算字段中得到一个0,因为我还需要十进制值来将它们乘以100

以下sql指令不适用于bigint

SELECT id, a/b
FROM <mytable>;

这在计算字段中返回0值给我,这是我想要避免的。

而我想拥有的是:

SELECT id, first_operand * 100
FROM    (SELECT id, a/b TYPE <newtype> AS first_operand
        FROM <mytable>) firstTable
NATURAL JOIN <mytable>;

所以我想知道的是如何更改SELECT投影中的数据类型或我有什么方法?

sql postgresql casting ddl dml
2个回答
2
投票

在Postgres中,您可以通过将cast附加到表达式来轻松地使用::<type to cast to>。所以在你的情况下,你可以尝试a::decimal / b::decimal得到a / b的结果是decimal。 (实际上已经只有一个操作数就足够了,如果你喜欢它不那么冗长。)


0
投票

您可以使用以下命令进行类型转换:

cast function i.e. CAST ( expression AS type )

或者:

PostgreSQL type cast ::  i.e. expression::type
© www.soinside.com 2019 - 2024. All rights reserved.