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