如何在 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 Server 到 Mysql 的迁移(使用 Mysql Workbench)。如何在 Workbench 向导的步骤中添加带有手动转义撇号的数据?