1

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

これを通常の列にして、テーブルに挿入するすべてのプロセスで口座番号を標準化するコードを配置するだけでよいと思います。これは、標準化コードを 1 か所にまとめるためです。

4

1 に答える 1

0

私が確認した限りでは、Teradata はテーブル内の計算列をサポートしていません。

さまざまな挿入すべてで同じコードを使用するという戦略を採用したため、残念ながらコードの重複が発生しました。

于 2010-03-19T17:19:03.890 に答える