1、查看oracle server端字符集
- select userenv('language') from dual;
如果显示如下:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,一个汉字占用两个字节
如果显示如下:SIMPLIFIED CHINESE_CHINA.AL32UTF8,一个汉字占用三个字节
select lengthb('你') from dual;
-
select * from v$nls_parameters t where t.PARAMETER='NLS_CHARACTERSET'
-
如果value=ZHS16GBK,那么一个汉字占用2个字节;
-
如果value=AL32UTF8,那么一个汉字占用3个字节。
2、如何求一个字符串占用的字符数和字节数?
Length 函数求得是占用字符数,lengthb或者vsize函数求得是占用字节数。
例如: 中华12 这个字符串占用了多少字符,字节?看sql返回值便清楚了。
select length('中华12') from dual --返回4,也就是占用4个字符
select lengthb('中华12') from dual --返回8,也就是占用8个字节,其中中华儿子各占3个字节,而12两个
字符各占一个字节
select lengthb(N'中华1') from dual --返回6,这是将字符串转换成为unicode字符串后,每个字符占用2个字 节,3个就是6个字节
select length(N'中华1') from dual --返回3,因为只有3个字符。