首页 > 解决方案 > 如何使用 PostgreSQL 更改 DML 中计算属性的数据类型?

问题描述

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

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

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

我的问题是我想计算平均值:两种数据之间的 A / B * 100bigint但是当我在计算字段中执行 A/BI 时获得 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投影中的数据类型或者我有什么方法?

标签: sqlpostgresqlcastingddldml

解决方案


在 Postgres 中,您可以通过附加到表达式轻松地进行转换。::<type to cast to>因此,在您的情况下,您可以尝试a::decimal / b::decimal获得a / b成为decimal. (实际上,如果你喜欢它不那么冗长,这里只需要一个操作数就足够了。)


推荐阅读