代码之家  ›  专栏  ›  技术社区  ›  Cade Roux

Teradata等效于持久化计算列(在SQL Server中)

  •  1
  • Cade Roux  · 技术社区  · 14 年前

    我们在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修剪功能,修剪部分会简单一点:

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

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Cade Roux    14 年前

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

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