我对实现varchar(n)的SQL方言并不熟悉,该行为的行为符合您的建议-建议使用初始大小,然后让其增长。这将适用于Oracle,SQL
Server,MySQL和Postgres。在所有这些数据库中,varchar(n)的行为几乎与您在具有显式强制转换的SELECT语句中在Teradata中的行为一样。我不认为将较长的字符串放入较短的字符串会导致截断错误。
正如Branko在评论中指出的那样,行为在数据修改步骤中是不同的,其中隐式强制转换确实会导致错误。
我对Teradata的所有细节都不熟悉。在SQL
Server中,从历史上看,varchar(max)和varchar(8000)之间存在很大的差异。前者将分配在单独的数据页面上,后者将与数据分配在同一页面上。(规则已在最新版本中进行了修改,因此varchars可能会溢出数据页面。)
换句话说,使用varchar(max)时可能还有其他考虑因素,包括数据如何存储在页面上,如何在页面上建立索引以及其他考虑因素。
我的建议是,您选择一个相当大的大小(例如1000左右),然后让应用程序从那里继续。如果要获得真正的灵活性,请使用varchar(max)。您还应该通过Teradata文档和/或技术联系来调查声明非常大的字符串存在的问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)