为什么'CHAR'使用WITH SIZE ?
declare
lf constant varchar2(1 char) := chr(10);
lf2 constant varchar2(2 char) := lf || lf;
begin
dbms_output.put_line('LINE-X'||lf||'LINE-Y'||lf2||'LINE-Z');
end;
结果如下
x直线y
LINE-Z
PL/SQL procedure successfully completed.
如果可能的话,我们可以在什么情况下使用'CHAR'?
在声明varchar2
数据类型变量(或列)时,在设置其大小时有两个选项:char
和byte
:
SQL> create table test
2 (a varchar2(1 byte),
3 b varchar2(2 char)
4 );
Table created.
SQL>
第一个选项(byte
)意味着为该列保留恰好一个字节。第二个选项(char
)意味着您选择存储一个字符到那一列。在许多/大多数情况下,没有区别。但是,如果使用包含多字节字符的字符集,你不能告诉每个字符占用多少字节,所以-例如-varchar2(2 byte)
不能保证你将设法存储所有字符(例如,使用3个字节的字符将不适合)。