【问题标题】:Teradata equivalent of persisted computed column (in SQL Server)Teradata 等效于持久计算列(在 SQL Server 中)
【发布时间】:2011-01-25 02:25:39
【问题描述】:

我们在 SQL Server 中有一些具有持久计算列的表。

Teradata 中是否有类似的功能?如果是这样,语法是什么,有什么限制吗?

我正在查看的特定计算列通过删除前导零来符合某些帐号 - 还会在此符合的帐号上创建索引:

ACCT_NUM_std AS ISNULL(CONVERT(varchar(39),
                               SUBSTRING(LTRIM(RTRIM([ACCT_NUM])),
                                         PATINDEX('%[^0]%',
                                                  LTRIM(RTRIM([ACCT_NUM])) + '.'
                                                 ),
                                         LEN(LTRIM(RTRIM([ACCT_NUM])))
                                        )
                              ),
                       ''
                      ) PERSISTED

使用 Teradata TRIM 功能,修剪部分会简单一些:

ACCT_NUM_std AS COALESCE(CAST(TRIM(LEADING '0' FROM TRIM(BOTH FROM ACCT_NUM))) AS varchar(39)),
                         ''
                        )

我想我可以把它变成一个普通的列,并在插入表格的所有进程中放入代码来标准化帐号。我们这样做是为了将标准化代码放在一个地方。

【问题讨论】:

  • 我猜您无法使用“计算数据”创建视图并从中获取数据是有原因的?
  • @bogertron 它确实需要被索引,因为有些东西需要加入标准化帐号而有些东西不需要。
  • 这是一个很好的理由:)。是的,Teradata 不支持这种机制。我想下一个最佳选择是创建触发器或执行您所做的操作(重新创建逻辑)。没有什么优雅的

标签: sql sql-server database-design calculated-columns teradata


【解决方案1】:

据我所知,Teradata 不支持表中的计算列。

我采用了让所有不同的插入使用相同的代码的策略,不幸的是,这导致了代码重复。

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多