使用 IF/ELSE 语句将列添加到 SQL 中的现有 table
Add column to existing table in SQL with IF/ ELSE Statement
我要起诉 PgAdmin4
我有一个名为 Development
的 table。此 table 包含名为 Customer
的列。我想创建一个名为 Target
的新列,当客户为 null
时等于 1,否则为 0
。
这是我的代码:
ALTER TABLE development ADD COLUMN Target INTEGER;
IF Customer IS NULL then
SET Target = 1;
else
SET Target = 0;
END if;
我收到这个错误:
ERROR: syntax error at or near "IF"
LINE 3: IF Customer IS NULL then
^
SQL state: 42601
Character: 53
您可以使用带有 case
表达式的 update
语句:
UPDATE mytable
SET target = CASE WHEN customer IS NULL THEN 1 ELSE 0 END
大多数数据库都支持生成的列。语法是这样的:
alter table development add column int generated always as
(case when customer is null then 1 else 0 end);
具体语法因数据库而异。
这比向 table 添加新列要强大得多,因为生成的列始终具有正确的值——即使没有 update
.
我要起诉 PgAdmin4
我有一个名为 Development
的 table。此 table 包含名为 Customer
的列。我想创建一个名为 Target
的新列,当客户为 null
时等于 1,否则为 0
。
这是我的代码:
ALTER TABLE development ADD COLUMN Target INTEGER;
IF Customer IS NULL then
SET Target = 1;
else
SET Target = 0;
END if;
我收到这个错误:
ERROR: syntax error at or near "IF"
LINE 3: IF Customer IS NULL then
^
SQL state: 42601
Character: 53
您可以使用带有 case
表达式的 update
语句:
UPDATE mytable
SET target = CASE WHEN customer IS NULL THEN 1 ELSE 0 END
大多数数据库都支持生成的列。语法是这样的:
alter table development add column int generated always as
(case when customer is null then 1 else 0 end);
具体语法因数据库而异。
这比向 table 添加新列要强大得多,因为生成的列始终具有正确的值——即使没有 update
.