我使用pgAdmin4将一个生成器列添加到PostgreSQLv14.8表中,表达式如下:

CASE WHEN columnA > 0 THEN columnA / columnB

但是我得到了这个语法错误:

第16行")"处或其附近出现语法错误:...>0然后是Columna/ColumnB) 已存储;^

我看了很多例子,都找不出我做错了什么.

EDIT

根据要求编写完整的SQL代码:

ALTER TABLE IF EXISTS public."table_name_here"
    ADD COLUMN columnA integer GENERATED ALWAYS AS (
       CASE WHEN columnA > 0 THEN columnA / columnB
) STORED;

推荐答案

使用以下代码在PostgreSQL15.4中创建一个生成的列;只需将"YOUR_TABLE"替换为您的表的真实名称.

ALTER TABLE your_table
ADD COLUMN generated_column numeric GENERATED ALWAYS AS (
    CASE WHEN columnA > 0 THEN columnA / columnB ELSE NULL END
);

Sql相关问答推荐

如何使用PostGIS从单个表中 Select 所有相交面组

使用Mac日志(log)时间找出SQL中的好小时和坏小时

使用sede获取不一定有两个不同标签的所有问题

连接特定行号

将所有XML文件导入到SQL Server中

具有多个条件的SQL否定

将两列相加为同一表中的行的查询

基于另一个(SAS、SQL)中的值更新列

嵌套Json对象的SQL UPDATE WHERE

在UNION查询中查找MIN

在SQL中,筛选其他列中只有一个值的ID

Snowflake 中的分层数据

从输出中删除 jsonb_build_object

计算不同模式的时间跨度

如何根据创建日期查找两个表中最接近的记录?

特殊条件计算小计

如何从postgresql中的项目映射(关联数组)设置值?

使用 SQL 计算一年中任意 3 个月期间的总成本

批量更改WooCommerce中所有产品的税收状态

连接表时避免重复