在oracle数据库和新bi在这里工作。想知道是否可以扩展长度为12到64或更长的可变字符(保存更长的字符串),我可能会看到什么样的问题? 我有一些程序和文件取决于这个领域。这是更一般的问题。定义为可变字符的字段是因为在将来扩展长度? THanks可变字符字段
可变字符字段
回答
这很可能且非常简单,并且没有问题需要担心(至少只要您在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倍,无论这是否真的需要。这可能是也可能不是问题,这取决于你的应用程序是如何内存不足的(以及同一台机器上发生了什么)。
varchar的用途与准备在未来扩展列大小无关。但是,改变表格以增加字段长度应该没问题。
varchar2数据类型用于可以包含可变长度字符串的字段 - 字段的大小是可以存储的最大字符数。只要你的字符串永远不超过字段长度,你应该没问题,并且与使用直接字符字符相比,可以节省一些空间。
如果您需要扩展字段定义以适应更长的字符串,则可以使用ALTER TABLE ... MODIFY ...语法。请注意,如果表中已经有大量的数据,这可能是一个代价高昂的操作。
ALTER TABLE
customer
MODIFY
(
cust_name varchar2(100)
);
会延长现有字段的长度或添加所需长度的新字段会更昂贵吗? – jac
如果您需要保留现有数据,那么在添加新列后,您需要更新所有行以获得适当的值,这可能比就地修改列更昂贵。通常,为了防止混淆,只需修改原始列即可。 –
- 1. OCaml - 可变字段
- 2. 可变结构字段
- 3. CSV导入(可变字段)
- 4. 可变输入字段长度的jquery字符限制
- 5. java解析字符串,可变字段数
- 6. 解析并查找可变字段数的字符串java
- 7. nvarchar字段中的不可见字符?
- 8. 字符串格式固定约束字符,可变字符内
- 9. 字符字段可以保留尾部空格字符吗?
- 10. SQL/Apex - 可变数字/字符混淆
- 11. Ruby字符串可变性
- 12. 字符串不可变性
- 13. Python可变字符分割
- 14. 使用字符串可变
- 15. 使用字段变量选择字段
- 16. 不可变类字段查询
- 17. Grails验证不可变字段
- 18. Clojure deftype中的可变字段?
- 19. 更改OCaml中的可变字段
- 20. 可变记录字段和{x带...}
- 21. WTForms创建可变数量的字段
- 22. Rails中MongoDB的可变字段数
- 23. 对象中的公共可变字段
- 24. Clojure:使用代理和可变字段
- 25. 可变字段的对象在Java集
- 26. Python伪不可变对象字段
- 27. Django - 可变字段名称的循环
- 28. 验证字段可能会改变
- 29. 对原生可变字段的警告
- 30. 使用可变附加字段参数
谢谢,将字段声明为变量字符的原因是什么。在这种情况下,它被定义为12,我们将其定义为变量,以便在将来需要时扩展? – jac
是的,有java程序使用这个字段 – jac
“变量字符”表示可变长度,但是如果你定义'varchar2(12)'这意味着12的上界(字节或字符,取决于你如何定义以及默认值) 。在Oracle的内部,无论是在磁盘上还是在内存中,长度都是字符串的实际长度,因此将所有内容定义为'varchar2(4000)'并不会造成什么影响。但是,如果将数据从Oracle批量加载到Java应用程序和内存可能是一个问题,那么您必须意识到这一点,而不是对列定义过于慷慨。 – mathguy