今天开发人员在调试程序时一直有点小问题,说是数据库问题,最后检查发现是开发人员一时疏忽了char()和varchar2()的区别,所以做了一个演示给开发人员看了一下,详细如下:
SQL> create table t(n char(10));
表已创建。
SQL> insert into t values('abcde');
已创建 1 行。
SQL> insert into t values('abcdef');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select length(n) from t;
LENGTH(N)
----------
10
10
SQL> create table t1(m varchar2(10));
表已创建。
SQL> insert into t1 values('abcde');
已创建 1 行。
SQL> insert into t1 values('abcdef');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select length(m) from t1;
LENGTH(M)
----------
5
6
用char()类型显然是在长度不足时系统自动追加了空格,可用下面方法取出
SQL> select trim(n) from t;
TRIM(N)
----------
abcde
abcdef
SQL> select length(trim(n)) from t;
LENGTH(TRIM(N))
---------------
5
6