【问题标题】:How do I add a calculated column in sql workbench / j如何在 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 ...

标签: sql amazon-redshift calculated-columns


【解决方案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 中不受支持)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多