У нас есть несколько таблиц с постоянными вычисленными столбцами в SQL Server.Терадатный эквивалент сохраняемого вычисленного столбца (в 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
@bogertron действительно нужно индексировать, потому что некоторые вещи должны присоединяться к стандартизованному номеру учетной записи, а некоторые - нет. –
Это хорошая причина :). Да, Teradata не поддерживает этот тип механизма. Следующий лучший вариант, я думаю, будет создавать триггеры или делать то, что вы сделали (воссоздать логику). Ничего элегантного – bogertron