知道可以使用SQL数据定义语言(DDL)服务器Postgres(SP):
对于SQL数据操作语言(DML)SP:
当我们制作一个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
投影中的数据类型或我有什么方法?
在Postgres中,您可以通过将cast附加到表达式来轻松地使用::<type to cast to>
。所以在你的情况下,你可以尝试a::decimal / b::decimal
得到a / b
的结果是decimal
。 (实际上已经只有一个操作数就足够了,如果你喜欢它不那么冗长。)
您可以使用以下命令进行类型转换:
cast function i.e. CAST ( expression AS type )
或者:
PostgreSQL type cast :: i.e. expression::type