SQL原型设计:使用varchar(N)面对数据的静默截断-还有更好的选择吗?(Te
技术问答
202 人阅读
|
0 人回复
|
2023-09-12
|
情况:1 x, K2 p2 }1 p$ B- c7 d
varchar(20)似乎在Teradata中 默默地截断 ,当长度超过20个字符串时, 不会7 E( D( G. A5 R" `3 s0 Y+ h! b
扩展或抱怨…这有点令人惊讶,因为我希望自动扩展列以适应较大的字符串(例如30个字符),或者如果遇到较大的字符串,将引发一个错误。无声的截断似乎使我在所有世界中都变得最糟糕了。, Z3 K) m- @ ^) ^
并发症:1 c. J5 f1 K, _' a
对于我的应用程序(原型分析设计),我不知道我会提前几周提取多少数据。这似乎排除了使用varchar(N),除了max: |# ]4 D. a$ e
问题:1 {, R! n, x7 C3 t
所以现在我有了一些选择,我正在寻找一些指导:
% Z& E) J; Z7 X" [8 c! rQ1.用户错误?我误解了一个关键概念吗?varchar(N)?
, D; Y( Y4 r; _假如这是真的Teradata处理varchar字段的方式,所以
3 W/ X, g2 a6 q; K$ O& GQ2.为什么有人指定比例?varchar(max)特别少的东西,特别是在事先不清楚的情况下,可能需要在字段中存储多少个字符。
" J) |7 V, p) t, [5 }. ^0 c" K- tQ3.是否有不同类型的数据允许灵活调整字符串的大小-即真正的 可变 长度字符串?
/ a9 O. O4 G& l) g8 w% V如果我还记得,其他的,SQL方言将实现varchar(n)建议字符串的初始尺寸,但允许适合抛出的数据字符串的最大长度。Teradata有类似的数据类型吗?, Z5 D$ _3 U, ~- T3 W. B4 c6 V
(注:由于我正在制作表格原型,我现在不太关心性能效率;更注重快速但安全的原型设计。3 W* `# u$ P" P9 Q
- E. D Y$ }5 w! t' e
解决方案: |
|
|
|
|
|