繁体   English   中英

Postgres:带括号操作的生成列

[英]Postgres: Generated column with parenthesis operation

我想在我的 PostgreSQL 表中添加一个生成的列。 问题是当我使用带括号的操作时,结果为零。

ALTER TABLE my_table 
add COLUMN my_column decimal(4,3) GENERATED ALWAYS AS ((price-buy_price)/price) STORED;

my_column 中的所有结果都是 0.000。 然后我尽量避免在我的操作中使用括号,所以我的查询看起来像:

ALTER TABLE my_table 
add COLUMN my_column2 decimal(4,3) GENERATED ALWAYS AS (price-buy_price/price) STORED;

这是工作,但结果不是我想要的。 我想知道为什么每次使用括号时它都会失败,而当我执行 (a+b) 或 (a+b/c) 或 (a*bc/d) 等操作时它会起作用。

有人有解决方案吗? 谢谢你。

如果您的列是 integer 列,则除法也是 integer 除法,您没有十进制数字。 您需要转换除法中的至少一个表达式:

ALTER TABLE my_table 
   add my_column decimal(4,3)  
      GENERATED ALWAYS AS ( (price-buy_price) / price::numeric) STORED;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM