|
简单理解
char和varchar2跟存储的数据本身没有关系,只是他们在相同长度的定义上实际占用的空间以及在数据的比较上不同.
1、一个是定长、一个是变长
char占用的空间始终和初始定义的长度一样.如果实际数据长度小于定义的长度,insert到数据库时会用blank补齐,比如char(5),最大可存储5个字符,如果你提供了四个字符的数据,那么第五个字符会用blank补齐;
varchar2占用的空间就是实际数据的长度,如果实际数据长度小于定义的长度,insert到数据库时不会用blank补齐,比如varchar2(5),最大可存储5个字符,如果你提供了四个字符的数据,那么第五个字符不会用blank补齐
2、字符比较上char采用blank-padded的策略,而varchar2采用nonpadded策略。
blank-padded就是比较时,长度小的数据会在末端追加空格,两边数据的长度相同后, 再比较; 比如这个时候 'a ' = 'a'的
nonpadded就是比较时,不会在长度小的数据末端追加空格.那么这个时候'a ' > 'a'的 |
|