Ситуация:
varchar(20)
кажется обрезать молча в Teradata и not для расширения или жалобы при столкновении строк длиной более 20 символов... Это немного сюрприз поскольку я ожидал либо автоматического расширения столбца, чтобы он соответствовал более крупным строкам, скажем 30 символов, ИЛИ для ошибки, которую нужно было бы выбросить, если бы столкнулась большая строка. Безмолвное усечение кажется мне самым худшим из всех миров...
Усложнение:
Для моего приложения (прототип аналитического дизайна) я не знаю заранее, насколько большими будут данные, которые я буду глотать в течение нескольких недель. Кажется, это исключает использование varchar (N), за исключением max
Вопросы:
Итак, теперь у меня есть несколько вариантов, и я ищу несколько советов:
Q1. Ошибка пользователя? Не понимаю ли я ключевого понятия о varchar(N)
?
Если это фактически то, как Teradata обрабатывает поля varchar
, то
Q2. почему бы кто-нибудь указать что-нибудь меньшее, чем varchar(max)
, особенно если заранее не ясно, сколько символов должно быть сохранено в поле.
Q3. Есть ли другой тип данных, который допускает гибкую калибровку строки - т.е. Строку символов истинной переменной длины?
Если я помню, другие SQL-диалекты реализуют varchar(N)
как рекомендуемый начальный размер для строки, но позволяют ей расширяться по мере необходимости, чтобы соответствовать максимальной длине строк данных, которые были добавлены. Есть ли аналогичный тип данных в Teradata?
(Примечание: поскольку я создаю прототипы таблиц, я в настоящее время меньше обеспокоен эффективностью работы, больше обеспокоен быстрыми, но безопасными конструкциями, которые позволяют прототипу прогрессировать.)