情况:
varchar(20)
似乎在 Teradata中静默截断,并且在遇到长度超过 20 个字符的字符串时不会扩展或抱怨......这有点令人惊讶,因为我希望自动扩展列以适应更大的字符串,比如 30 个字符,或者如果遇到更大的字符串,则抛出错误。沉默的截断似乎让我成为世界上最糟糕的事情......
并发症:
对于我的应用程序(原型分析设计),我事先不知道我将在几周内摄取的数据有多大。这似乎排除了使用 varchar(N),除了 max
问题:
所以现在我有几个选择,并且正在寻找一些指导:
Q1。用户错误?我是否误解了一个关键概念varchar(N)
?
如果这实际上是 Teradata 处理varchar
字段的方式,那么
Q2。为什么有人会指定任何内容,varchar(max)
尤其是在事先不清楚字段中可能需要存储多少字符的情况下。
Q3。是否存在允许灵活调整字符串大小的不同数据类型——即真正的可变长度字符串?
如果我记得,其他 SQL 方言实现varchar(n)
为字符串的建议初始大小,但允许它根据需要扩展以适应所抛出数据字符串的最大长度。Teradata 中是否有类似的数据类型?
(注意:由于我正在对表格进行原型设计,因此我现在不太关心性能效率;更关心允许原型进行的快速但安全的设计。)