VARCHAR2 占几个字节? NLS_LENGTH_SEMANTICS,nls_language

ORACLE初始化参数:NLS_LENGTH_SEMANTICS

初始化参数NLS_LENGTH_SEMANTICS用于指定CHAR列或VARCHAR2列的长度定义方式,默认值为BYTE。

当设置该参数为BYTE时,定义CHAR列或VARCHAR2列采用字节长度方式;

当设置该参数为CHAR时,定义CHAR列或VARCHAR2列采用字符个数方式。

需要注意,设置该参数对于已存在参数没有作用。

生产库

nls_language                         string      SIMPLIFIED CHINESE

nls_length_semantics                 string      BYTE

测试库

nls_language                         string      AMERICAN

nls_length_semantics                 string      BYTE

varchar2(20)和varchar2(20 byte)是否相同呢?

相不相同是由数据库的参数NLS_LENGTH_SEMANTICS决定的,有两个单位,char(字符)或者字节(byte),该参数默认值为BYTE。

所以说,在默认情况下 varchar2(20) = varchar2(20 byte)。如果参数值为CHAR 就不相等。

两个库同一张表

select PERSON

from temp_opt_order_trace

where LENGTH(PERSON)=21

person varchar2(32)

‘二郎公交车站对面18355200098代签‘

这么说来 VARCHAR2(32)  是字符 不受NLS_LENGTH_SEMANTICS 是否BYTES影响 同时也不受nls_language 语言影响. 在我的11.2.0.0.1库里.

其实受影响的 其PERSON最大值 21  这个是字符长度 也就是字符个数 字母,中文,数字都算1个. 当实际上对应的BYTES 中文占2个,字母和数字占1个.

nls_language 如果是UNICODE UTF-8 AU32 中文是占3个字节.

时间: 2024-10-13 00:27:51

VARCHAR2 占几个字节? NLS_LENGTH_SEMANTICS,nls_language的相关文章

VARCHAR2 他们占几个字节? NLS_LENGTH_SEMANTICS,nls_language

ORACLE初始化参数:NLS_LENGTH_SEMANTICS 初始化參数NLS_LENGTH_SEMANTICS用于指定CHAR列或VARCHAR2列的长度定义方式,默认值为BYTE. 当设置该參数为BYTE时,定义CHAR列或VARCHAR2列採用字节长度方式. 当设置该參数为CHAR时.定义CHAR列或VARCHAR2列採用字符个数方式. 须要注意,设置该參数对于已存在參数没有作用. 生产库 nls_language                         string    

一个int类型究竟占多少个字节

一个int占多少个字节? 这个问题我们往往得到的答案是4. 可是int究竟占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes match the ILP32LL model, which is what most compilers adhere to on 32-bit platforms. The LP64 model is the de facto standard for compilers that genera

由“Java中一个字符占两个字节”引起

起因 Java中一个字符占两个字节,这和C/C++稍有区别.在C/C++中我们可以通过sizeof运算符方便地知道某个变量类型或对象的大小,那在Java中又如何? 问题出现 Java为什么没有提供sizeof运算符? 要回答这个问题,我们可以从另一个角度来看,那就是为什么C/C++中提供sizeof运算符.这就让人忍不住想到C/C++和Java在内存管理上的区别. 在C中,内存分配和释放的任务交给了程序员,当我们尝试用malloc为某个对象分配一块堆内存时,一个无法逃避的问题是,这个即将被创建的

一个汉字在数据库占几个字节

项目中oracle10g数据库表字段为varchar(n)类型,存英文很简单,只要字母个数不大于n即可.但是对于汉字,按照同样的方法就不行了.因为对于汉字不同的字符集,在数据库占用的字节是不一样的.UTF-8字符集,一个汉字占三个字节,gbk字符集,一个汉字占两个字节,比如varchar(10)类型的字段,UTF-8的汉字,只能存3个,gbk字符集的汉字却能存5个.所以在程序中根据表字段varchar的大小,保存或更新时作出必要的校验否则后台会报错.办法:1.用表格 maxlength属性,比如

Java整数占几个字节,以及负数的二进制表示方法,以及Java的逻辑运算符>>和>>>的区别

Java整数占几个字节? 答:占4个字节,共32个比特位 1个字节占8个比特位(1B(byte)= 8 bit) 因此,类型和字节对应如下 byte 1 short 2 char 2 int 4 float 4 double 8 double  8 -----------------------------------------------------------------------以下是用System.out.println的SIZE输出-------------------------

Java一个汉字占几个字节(详解与原理)(转载)

1.先说重点: 不同的编码格式占字节数是不同的,UTF-8编码下一个中文所占字节也是不确定的,可能是2个.3个.4个字节: 2.以下是源码: 1 @Test 2 public void test1() throws UnsupportedEncodingException { 3 String a = "名"; 4 System.out.println("UTF-8编码长度:"+a.getBytes("UTF-8").length); 5 Sys

一开始看到Int16, Int32, Int64这三种类型就觉得有点怪, 为什么要整个数字结尾的, 挺怪的. 昨天互相想到, ms这么干就是想让大家一眼就知道这个数据类型占多大空间吧. Int8, 等于byte, Int16, 等于short, 占2个字节. -32768 32767 Int32, 等于int, 占4个字节. -2147483648 2147483647 Int64

一开始看到Int16, Int32, Int64这三种类型就觉得有点怪, 为什么要整个数字结尾的, 挺怪的. 昨天互相想到, ms这么干就是想让大家一眼就知道这个数据类型占多大空间吧. Int8, 等于byte, Int16, 等于short, 占2个字节. -32768 32767 Int32, 等于int, 占4个字节. -2147483648 2147483647 Int64, 等于long, 占8个字节. -9223372036854775808 9223372036854775807

一个int占多少个字节?

最近在一本有关代码审计的书上看到如上解释.这里很好的解释了int到底应该占多少个字节. 而且从他的角度来看是编译器去适应平台.所以真正决定int占多少字节取决于你的device platforms. 其实无论哪种模型short和char无论哪种model下都保持一致. 我们见得最多的就是ILP32LL模型.这种模型下int和long已经pointer占4个字节 long long占8个字节. PS:这个表很容易记,中间的数字表明你是64bit还是32bit的机器.前面的I表示int,L表示lon

一个带有函数的类占几个字节

如果一个类中带有函数,变量,虚函数时,这个类占用的字节数是多少呢?冥思苦想不如自己动手写个程序测试一下不就知道么!所以我写了以下程序: #include<stdio.h> class B_class { protected: virtual void print() = 0; long tt = 0; char aa; double f; void a() { int t = 0; } }; int main() { printf("size=%d", sizeof(B_c