VARCHAR2的最大长度是32767还是4000

VARCHAR2的最大长度是32767还是4000?

截止目前的答案应该是这样的:

1.Oracle12c之前的版本,表字段类型最大长度是4000个字节;

(Oracle12c通过设置初始化参数MAX_SQL_STRING_SIZE为EXTENDED可以支持到32767个字节)

2.PLSQL环境中VARCHAR2变量的最大长度是32767个字节;

可以通过几个测试观察一下VARCHAR2变量类型的特性:

1.Oracle的表字段类型最大支持到VARCHAR2(4000)

VARCHAR2的最大长度是32767还是4000_第1张图片

2.在PLSQL环境下申明变量时可以用到VARCHAR2(32767),但是赋值时实际最大只有4000

VARCHAR2的最大长度是32767还是4000_第2张图片

这里有个有趣的对比:

V0通过变量赋值,V2通过SQL赋值,结果V1的长度是32767,而V2的长度只有4000。

3.4000是指字节,如果是N字节的字符,最大可填充4000/N个字符。

比如GBK汉字占2个字符,就只能放2000个汉字。

VARCHAR2的最大长度是32767还是4000_第3张图片

4.VARCHAR2变量可以带字符(CHAR)或字节(BYTE)限定词,默认是由初始化参数NLS_LENGTH_SEMANTICS决定的


5.CHAR和BYTE限定词的作用,变量按字节统计(lengthb)的容量CHAR是BYTE的N倍(取决于数据库字符集)

VARCHAR2的最大长度是32767还是4000_第4张图片

这个代码中,V0最多只能容下1000个中文字,但是将2000个中文字赋值给它,没有报错,只是截取了前1000个中文字;如果将2001个中文字赋值给V0,就会报错了,因此赋值时的语法分析只是判断了长度,并没有判断字符集的影响。

VARCHAR2的最大长度是32767还是4000_第5张图片

你可能感兴趣的:(PL/SQL开发,VARCHAR2类型,VARCHAR2长度,VARCHAR2限定词,ORACLE,字符类型)