变量字符字段

时间:2017-07-26 14:31:45

标签: sql oracle

在这里使用oracle数据库和new bi。只是想知道是否可以永久地扩展长度为12到64或更长的变量字符(以保持更长的字符串),我可能会看到什么样的问题? 我有一些程序和文件依赖于这个领域。这是更普遍的问题。定义为变量字符的字段是因为将来会延长长度吗? 感谢

2 个答案:

答案 0 :(得分:0)

这是可能的,非常简单,并且没有任何问题需要担心(至少只要你在Oracle工作;更多关于下面的内容)。它的工作原理如下:

create table tbl (x varchar2(10));
insert into tbl values ('mathguy')
alter table tbl modify (x varchar2(20));

您可能遇到的问题是其他语言的应用程序(如Java)。如果必须将数据从Oracle表加载到Java应用程序(例如),则根据声明的字符串长度(而不是实际大小)分配为表中的值保留的内存。因此,如果您从长度10更改为长度4000,则为来自表的值分配大约40倍的内存,无论是否真的需要。这可能是也可能不是问题,这取决于RAM应用程序的缺乏程度(以及同一台计算机上发生了什么)。

答案 1 :(得分:0)

varchar的目的与准备将来扩展列大小无关。但是,改变表格以增加字段长度应该没问题。

varchar2数据类型用于可以包含可变长度字符串的字段 - 字段的大小是可以存储的最大字符数。只要你的字符串永远不会超过字段长度,你应该没问题,并且与使用直接字符字符相比可以节省一些空间。

如果需要扩展字段定义以适应更长的字符串,可以使用ALTER TABLE ... MODIFY ...语法。请注意,如果表中已有大量数据,则这可能是一项代价高昂的操作。

ALTER TABLE 
   customer 
MODIFY 
   ( 
   cust_name varchar2(100)
   );

请参阅Oracle Documentation of VARCHAR2 Here