ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DB2的字符型字段,NULL与空串

DB2的字符型字段,NULL与空串

原创 Linux操作系统 作者:47328983 时间:2013-09-12 19:42:42 0 删除 编辑
对于DB2的字符型字段,NULL与空串(即’\0′)的概念不同,在开发中要区分对待。
1、在建表时,如果不附加任何约束,那么CHAR型字段可以存储任何合法字符及NULL。
插入x’00′:        可以
插入NULL:   可以
INSERT默认值: NULL
2、NOT NULL约束
插入x’00′:         可以
插入NULL:   失败
INSERT默认值: INSERT失败
3、NOT NULL WITH DEFAULT约束
插入x’00′:         可以
插入NULL:   失败
INSERT默认值: 默认为空格,可指定其他字符,甚至是x’00′
例如 NOT NULL WITH DEFAULT ’4′
NOT NULL WITH DEFAULT x’00′
以SQC方式查询一个值为NULL的字符型字段,可能会引发-305错误。日常应用中习惯以NOT NULL WITH DEFAULT约束建表,该约束只保证字段值非NULL,但可能是任何其他值,包括’\0′。
命令行不容易区分空格、空串、NULL以及’-',可以使用ASCII()或HEX()内建函数来区分:
空串   正常显示:   hex():00
空格   正常显示:   hex():20
NULL   正常显示:-     hex():-
‘-’            正常显示:-     hex(): 2D
 
但是设置了oracle的兼容性之后,现没有空字符串一说,会把''当null来对待!不知道是在兼容性的哪一级设置的?

16进制值

兼容特性

    

1 (0x01)

ROWNUM

支持ROWNUM出现在WHERE字句中

2 (0x02)

DUAL

支持DUAL

3 (0x04)

Outer join operator

支持外连接操作符(+)

4 (0x08)

Hierarchical queries

支持使用CONNECT BY的嵌套查询

5 (0x10)

NUMBER data type

支持NUMBER数据类型

6 (0x20)

VARCHAR2 data type

支持VARCHAR2数据类型

7 (0x40)

DATE data type

支持DATETIMESTAMP组合使用

8 (0x80)

TRUNCATE TABLE

支持TURNCATE TABLE语句

9 (0x100)

Character literals

支持CHARGRAPHIC

数据类型的赋值操作

10 (0x200)

Collection methods

支持集合方法,例如对ARRAYfirst

lastnextprevious方法

11 (0x400)

Data dictionary-compatible views

支持创建数据字典兼容特性视图

12 (0x800)

PL/SQL compilation

支持PL/SQL语言


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/241379/viewspace-772652/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-03-07

  • 博文量
    111
  • 访问量
    331757