db2中null和空值的区别_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

支持DATE和TIMESTAMP组合使用

8 (0x80)

TRUNCATE TABLE

支持TURNCATE TABLE语句

9 (0x100)

Character literals

支持CHAR和GRAPHIC

数据类型的赋值操作

10 (0x200)

Collection methods

支持集合方法,例如对ARRAY的first、

last、next和previous方法

11 (0x400)

Data dictionary-compatible views

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

12 (0x800)

PL/SQL compilation

支持PL/SQL语言

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值