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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top