DB2的字元型欄位,NULL與空串

47328983發表於2013-09-12
對於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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章