1
我們在SQL Server中有幾個持久計算列的表。Teradata等效於持久計算列(在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)),
''
)
我想我可能只是使這個普通列,並把代碼中所有插入到表的過程,以規範賬戶號碼。我們這樣做是爲了將標準化代碼放在一個地方。
我猜你有一個原因,你爲什麼不能創建一個'計算數據'視圖和來源? – bogertron 2010-03-19 17:39:47
@bogertron它真的需要被索引,因爲有些事情需要加入標準化賬號,有些則不需要。 – 2010-03-19 19:10:03
這是一個很好的理由:)。是的,Teradata不支持這種機制。下一個最好的選擇,我想是創建觸發器或做你做的(重新創建邏輯)。沒有優雅 – bogertron 2010-03-19 23:24:08