在官方文档中,说null与空字符串是等价的。但是oracle建议不要把他们当成一样,因为以后可能会改变。
另外,他们还是有区别的:
1,is null 或者 is not null,这是整体的,不能把null换成空字符串;
2,在case 或者decode中,null和空字符串也是有区别的;
3,null可以成为boolean类型的第三个值,空字符串不行;
4,plsql中的动态语句中绑定的变量可以传入空字符串,但是不能传入null;
char
总体来说,建议用varcahr2,不建议用char。
char这个东西呢,跟varchar2类似。都是字符串类型,但是char是定长的,就算你的字段值没有这么长,也会在你的值后面加上空格,这无疑会占用更多的空间,同时呢,这个小特性,还使得char在绑定变量以及plsql中有很多容易出问题的地方。
SQL> CREATE TABLE TEST (A CHAR(10),B VARCHAR2(10));
Table created.
SQL> insert into test values('haha','haha');
1 row created.
SQL> commit;
Commit complete.
SQL> select length(a),length(b) from test;
LENGTH(A) LENGTH(B)
---------- ----------
10 4
就到这,在用sql解趣味题,改天一起发出来
另外,他们还是有区别的:
1,is null 或者 is not null,这是整体的,不能把null换成空字符串;
2,在case 或者decode中,null和空字符串也是有区别的;
3,null可以成为boolean类型的第三个值,空字符串不行;
4,plsql中的动态语句中绑定的变量可以传入空字符串,但是不能传入null;
char
总体来说,建议用varcahr2,不建议用char。
char这个东西呢,跟varchar2类似。都是字符串类型,但是char是定长的,就算你的字段值没有这么长,也会在你的值后面加上空格,这无疑会占用更多的空间,同时呢,这个小特性,还使得char在绑定变量以及plsql中有很多容易出问题的地方。
SQL> CREATE TABLE TEST (A CHAR(10),B VARCHAR2(10));
Table created.
SQL> insert into test values('haha','haha');
1 row created.
SQL> commit;
Commit complete.
SQL> select length(a),length(b) from test;
LENGTH(A) LENGTH(B)
---------- ----------
10 4
就到这,在用sql解趣味题,改天一起发出来
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30123160/viewspace-2058309/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30123160/viewspace-2058309/