我们有持久化计算列的几桌在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)),
                         ''
                        )

我想我可能只是使这个普通列,并把代码中所有插入到表的过程,以规范账户号码。我们这样做是为了把标准化的代码在一个地方。

有帮助吗?

解决方案

据我已经能够确定,Teradata的不支持计算列在表中。

我采用具有所有的各种插入件使用相同的代码,这导致在代码重复的策略,可惜。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top