持久化计算列的Teradata等效项(在SQL Server中)
在SQLServer中,我们有几个表具有持久化的计算列 Teradata中是否有类似的功能?如果是,语法是什么,有什么限制吗 我正在查看的特定计算列通过删除前导零来符合某些帐号-还将在此符合的帐号上创建索引:持久化计算列的Teradata等效项(在SQL Server中),sql,sql-server,database-design,calculated-columns,teradata,Sql,Sql Server,Database Design,Calculated Columns,Teradata,在SQLServer中,我们有几个表具有持久化的计算列 Teradata中是否有类似的功能?如果是,语法是什么,有什么限制吗 我正在查看的特定计算列通过删除前导零来符合某些帐号-还将在此符合的帐号上创建索引: ACCT_NUM_std AS ISNULL(CONVERT(varchar(39), SUBSTRING(LTRIM(RTRIM([ACCT_NUM])),
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)),
''
)
我想我可以把这个列设为一个普通列,然后把代码放在表中插入的所有流程中的帐号标准化。我们这样做是为了将标准化代码放在一个地方。据我所知,Teradata不支持表中的计算列
我采取了让所有不同的插入使用相同代码的策略,这导致了代码重复,不幸的是。我猜您无法创建包含“计算数据”和源的视图是有原因的?@bogertron它确实需要索引,因为有些东西需要在标准化账号上加入,而有些东西则不需要。这是一个很好的原因:)。是的,Teradata不支持这种机制。我想,下一个最好的选择是创建触发器或执行您所做的操作(重新创建逻辑)。不优雅