1

Nous avons quelques tables avec des colonnes calculées persistantes dans SQL Server. Y at-il un équivalent de ceci dans Teradata?Equivalent Teradata de la colonne calculée persistante (dans SQL Server)

Et si oui, quelle est la syntaxe et y a-t-il des limites?

Les particuliers colonnes calculées que je suis à la conformité des numéros de compte en supprimant zéros - un index est également créé sur ce conformez numéro de compte:

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 

Avec la fonction Teradata TRIM, la partie de coupe serait un peu plus simple:

ACCT_NUM_std AS COALESCE(CAST(TRIM(LEADING '0' FROM TRIM(BOTH FROM ACCT_NUM))) AS varchar(39)), 
         '' 
         ) 

Je suppose que je pouvais faire une colonne normale et de mettre le code pour normaliser les numéros de compte dans tous les processus qui insèrent dans la table. Nous l'avons fait pour mettre le code de normalisation au même endroit.

+0

Je suppose qu'il y a une raison pour laquelle vous ne pouvez pas créer une vue avec les 'données calculées' et la source de cela? – bogertron

+0

@bogertron il a vraiment besoin d'être indexé parce que certaines choses doivent se joindre au numéro de compte standardisé et d'autres non. –

+0

C'est une bonne raison :). Oui, Teradata ne supporte pas ce type de mécanisme. La prochaine meilleure option, je suppose serait de créer des déclencheurs ou faire ce que vous avez fait (recréer la logique). Rien d'élégant – bogertron

Répondre

0

Dans la mesure où j'ai pu déterminer, Teradata ne prend pas en charge les colonnes calculées dans les tables.

J'ai adopté la stratégie de faire en sorte que tous les différents inserts utilisent le même code, ce qui a malheureusement entraîné la duplication de code.

Questions connexes