2017-04-27 61 views
0

在一个表我定义字段作为差(16)

FORACID VARCHAR2(16 CHAR) 

输出查询:select foracid from tbaadm.gam where rownum <= 5;

FORACID 
---------------------------------------------------------------- 
00000063011015 
00000063011028 
00000063011024 
00000063011023 
00000441021004 

在我定义字段作为另一个表

FORACID VARCHAR2(16) 

输出查询:select foracid from tbaadm.gam where rownum <= 5;

FORACID 
---------------- 
0382010021491 
UB3 
3667 
PCAP 
LO-CCA2 

可以看到,在第一个查询时,阀芯是大小为64(即16字符即16 * 4 = 64) 在第二查询中,线轴16的尺寸(即16字节,即16的* 1 = 16)

如何使第一个查询的spool输出也只显示16个大小。 这可能吗?

+0

'VARCHAR2(16 CHAR)'将存储16个字符,而'VARCHAR2(16)'是'VARCHAR2(16字节)'将存储速记16个字节(对于多字节字符,这将存储少于16个字符)。 – MT0

+3

@ MT0:我不认为这是非常正确的。 'VARCHAR2(16)'的含义取决于NLS_LENGTH_SEMANTICS的设置方式。看到[这个问题](http://stackoverflow.com/questions/7477564/varchar2n-bytechar-default-char-or-byte)更好的解释。 –

+0

@BobJarvis默认是'BYTE',但是,我会同意它取决于该参数。 – MT0

回答