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

对于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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/241379/viewspace-772652/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值