【问题标题】:How do I change the data type of a calculated attribute in DML with PostgreSQL?如何使用 PostgreSQL 更改 DML 中计算属性的数据类型?
【发布时间】:2018-12-22 09:36:18
【问题描述】:

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

  • 创建
  • 改变
  • 丢弃

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

  • 选择
  • 插入
  • 更新
  • 删除

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

我的问题是我想计算平均值:A / B * 100 在两种类型的数据bigint 之间但是当我做 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 投影中的数据类型,或者我有什么办法?

【问题讨论】:

    标签: sql postgresql casting ddl dml


    【解决方案1】:

    在 Postgres 中,您可以通过将 ::&lt;type to cast to&gt; 附加到表达式来轻松地 cast。因此,在您的情况下,您可以尝试a::decimal / b::decimal 以使a / b 成为decimal 的结果。 (实际上,这里只转换一个操作数就足够了,如果你喜欢它不那么冗长的话。)

    【讨论】:

      【解决方案2】:

      您可以使用以下方法进行类型转换:

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

      或者也可以:

      PostgreSQL type cast ::  i.e. expression::type
      

      【讨论】:

        猜你喜欢
        • 2020-07-06
        • 2019-06-06
        • 2021-04-16
        • 2023-01-22
        • 1970-01-01
        • 1970-01-01
        • 2011-11-02
        • 2021-10-31
        • 2018-02-21
        相关资源
        最近更新 更多