sql - 如何使用CAST和SQL中另一个表的信息添加新列?

标签 sql postgresql syntax-error calculated-columns alter-table

我试图了解SQL中两个操作之间的关系-ADD COLUMN和CAST()。
我试图创建一个包含另一列值的长度的新列,而另一列的类型为INTEGER:

ALTER TABLE inventory 
    ADD inventory_id_len AS (CHAR_LENGTH(CAST(inventory_id AS VARCHAR)) FROM rental);
但它返回:
ERROR:  syntax error at or near "AS"
LINE 4:  ADD inventory_id_len AS (CHAR_LENGTH(CAST(inventory_id AS V...
谢谢。

最佳答案

在Postgres中,您需要使用generated always ... stored语法use来添加计算列。对于您的用例,它看起来像:

alter table inventory 
    add inventory_id_len int 
    generated always as (char_length(inventory_id::text)) stored
;
在这种情况下,子查询毫无意义。计算的列在同一行上采用inventory_id列的值。

关于sql - 如何使用CAST和SQL中另一个表的信息添加新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64803472/

相关文章:

SQL 服务器查询 : how to check value within range

SQL SELECT 子句与特定顺序的 WHERE 语句

mysql - phpMyAdmin 中的更新语句不起作用

javascript - Nodemailer 错误无法修复

SQL Server SELECT INTO @variable?

SQL表将一个id的多行分成多列

postgresql - 在 SQL 中编写子查询

postgresql - psql clean/reset database to just schema

sql - 带有任何子句的 Postgres 相似性运算符 - 每个参数的限制?

bash - Makefile 语法错误 : end of file unexpected (expecting "fi")