如何在 sql workbench / j 中添加计算列

Posted

技术标签:

【中文标题】如何在 sql workbench / j 中添加计算列【英文标题】:How do I add a calculated column in sql workbench / j 【发布时间】:2013-03-20 18:42:02 【问题描述】:

如何在 SQL workbench/j 中添加计算列(作为 amazon redshift 的客户端)

ALTER TABLE table_one
ADD COLUMN test_column
AS (
SELECT
(CASE WHEN LEFT(name,3) = "Ads" THEN "ok" ELSE "no" END) 
FROM table_one
)
VARCHAR(100) NULL;

我也尝试用常量字符串值替换 SELECT 语句,但没有成功。

【问题讨论】:

我认为更好的方法是ALTER TABLE 然后UPDATE ... 【参考方案1】:

为未来的搜索者添加:mysql 5.7 支持计算列,它称为“生成”列。在 MySQL Workbench 中,您可以通过选择“列”选项卡中的行,单击“生成”按钮,然后在“默认/表达式”字段中添加公式(开头不带等号)来添加公式。

【讨论】:

问题是关于 Amazon Redshift,而不是关于 MySQL。它是关于 SQL Workbench/J 而不是关于 MySQL Workbench 此外,SQL 标准指定 <data type> GENERATED [ALWAYS] AS (function)' [STORED | VIRTUAL] - Firebird 使用 COMPUTED BY 语法(它已经使用了很长时间)。不幸的是,VIRTUAL 这个词也用于此,因为它也是标准的存储类说明符之一(即 [STORED | VIRTUAL] - 前者在磁盘上,后者是动态计算的)。跨度> 【参考方案2】:

你可以这样做:

    ALTER TABLE table_one
    ADD COLUMN test_column VARCHAR(100) NULL;

    GO;

然后更新所有行:

UPDATE table_one
SET test_column = (CASE WHEN LEFT(name,3) = "Ads" THEN "ok" ELSE "no" END) 

【讨论】:

这与计算列不同,因为它不会为新插入的行填充 test_column。您必须定期运行 UPDATE 语句(或将其添加为表触发器,这在 Redshift 中不受支持)。

以上是关于如何在 sql workbench / j 中添加计算列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Workbench/J 中自定义 SQL 关键字

如何在 SQL Workbench/J 中更改活动的数据库连接?

sql workbench/j 如何汉化啊,英文看着费劲。

SQL Workbench/J:运行 SQL 文件

如何在 SQL Workbench/J 上提高导入速度

SQL Server 到 Mysql 的迁移(使用 Mysql Workbench)。如何在 Workbench 向导的步骤中添加带有手动转义撇号的数据?