Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
持久化计算列的Teradata等效项(在SQL Server中)_Sql_Sql Server_Database Design_Calculated Columns_Teradata - Fatal编程技术网

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

持久化计算列的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])),

在SQLServer中,我们有几个表具有持久化的计算列

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)),
                         ''
                        )

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

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


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

我猜您无法创建包含“计算数据”和源的视图是有原因的?@bogertron它确实需要索引,因为有些东西需要在标准化账号上加入,而有些东西则不需要。这是一个很好的原因:)。是的,Teradata不支持这种机制。我想,下一个最好的选择是创建触发器或执行您所做的操作(重新创建逻辑)。不优雅