Teradata equivalente di persistente colonna calcolata (in SQL Server)
-
18-09-2019 - |
Domanda
Abbiamo un paio di tabelle con colonne calcolate persistenti in SQL Server.
C'è un equivalente di questo Teradata? E, in caso affermativo, qual è la sintassi e ci sono delle limitazioni?
Le particolari colonne calcolate sto guardando conformi alcuni numeri di conto, eliminando gli zeri iniziali - un indice viene creato anche in questo conformate numero di conto:
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
Con la funzione TRIM Teradata, la parte di taglio sarebbe un po 'più semplice:
ACCT_NUM_std AS COALESCE(CAST(TRIM(LEADING '0' FROM TRIM(BOTH FROM ACCT_NUM))) AS varchar(39)),
''
)
Credo che avrei potuto solo fare presente una colonna normale e mettere il codice di standardizzare i numeri di conto in tutti i processi che si inseriscono nella tabella. L'abbiamo fatto per mettere il codice di normalizzazione in un unico luogo.
Soluzione
Per quanto ho potuto determinare, Teradata non supporta colonne calcolate nelle tabelle.
ho adottato la strategia di avere tutti i vari inserti usano lo stesso codice, che ha portato la duplicazione del codice, purtroppo.