SQL原型设计:使用varchar(N)面对数据的静默截断-还有更好的选择吗?(Teradata)

SQL原型设计:使用varchar(N)面对数据的静默截断-还有更好的选择吗?(Teradata),第1张

SQL原型设计:使用varchar(N)面对数据的静默截断-还有更好的选择吗?(Teradata)

我对实现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文档和/或技术联系来调查声明非常大的字符串存在的问题。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5649684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存