Oracle中一个汉子占几个字节
本文转自: https://www.cnblogs.com/kerrycode/archive/2013/12/10/3466993.html:
一 、因为ORACLE数据库它可以存储字节或字符,例如 CHAR(12 BYTE) CHAR(12 CHAR)的意义是不同的.一般来说默认是存储字节,你可以查看数据库参数NLS_LENGTH_SEMANTICS的值。
如果定义为VARCHAR2(50 CHAR),那么该列最多就可以存储50个汉字,如果定义字段为VARCHAR2(50) 或VARCHAR2(50 BYTE)那么它最多可以存储多少个汉字就要视数据库字符集编码决定。
二 、ORACLE数据库汉字占用几个字节,要根据ORACLE中字符集编码决定,一般情况下,数据库的NLS_CHARACTERSET 为AL32UTF8或UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节.
SELECT * FROM v$nls_parameters WHERE PARAMETER='NLS_CHARACTERSET';
至于具体情况,可以通过LENGTHB或者VSIZE函数求得是占用字节数。
名称 | 描述 |
---|---|
LENGTH函数 | 求得是占用字符数 |
LENGTHB或者VSIZE函数 | 占用字节数 |
LENGTH是计算字符的个数,输入的参数先被转为字符类型计算
1: SQL> SELECT LENGTH('您好') FROM DUAL;
2:
3: LENGTH('您好')
4: --------------
5: 2
6:
7: SQL> SELECT LENGTHB('您好') FROM DUAL;
8:
9: LENGTHB('您好')
10: ---------------
11: 6