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語言 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/241379/viewspace-772652/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle空串與null的處理OracleNull
- SQL字元型欄位按數字型欄位排序實現方法SQL字元排序
- MySQL中的NULL和空串比較MySqlNull
- Java中空串和null串的區別JavaNull
- mysql 查詢欄位為null或者非nullMySqlNull
- java查詢資料庫,int型欄位為null的情況Java資料庫Null
- MySQL-去掉不為null的欄位MySqlNull
- 欄位字元型別不匹配導致CPU佔用率高字元型別
- json轉化保留null欄位JSONNull
- Mybatis-Plus 更新欄位為 NULLMyBatisNull
- MySQL中NULL欄位的比較問題MySqlNull
- sql 統計多個欄位的和(如果欄位中含有 null 的處理)SQLNull
- where語句中多條件查詢欄位NULL與NOT NULL不確定性查詢Null
- oracle的欄位型別Oracle型別
- [案例] 字元型欄位統計資訊只對前32位進行統計字元
- MySQL null值欄位是否使用索引的總結MySqlNull索引
- LOB欄位EMPTY_LOB和NULL的區別Null
- MySQL中TEXT與BLOB欄位型別的區別MySql型別
- 修改表的欄位型別型別
- [BUG反饋]新建欄位無法使用字元型預設值字元
- MySQL欄位新增註釋,但不改變欄位的型別MySql型別
- 資料庫索引欄位請不要為NULL資料庫索引Null
- 保留兩位小數:資料庫欄位型別NUMBER,Java欄位型別Double型別資料庫型別Java
- 萬用字元——*可以當空串或任意串(一)字元
- sql語句修改欄位型別和增加欄位SQL型別
- [20130301]clob欄位的empty_clob與NULL.txtNull
- MongoDB中的欄位型別IdMongoDB型別
- oracle 修改欄位型別的方法Oracle型別
- MongoDB更改欄位型別MongoDB型別
- 為什麼資料庫欄位要使用NOT NULL?資料庫Null
- 關於直方圖中關於字元型別的ENDPOINT_VALUE欄位的轉換直方圖字元型別
- 使用不含萬用字元的like運算子遇到char型別的欄位時要注意!字元型別
- Oracle的null和空串【一切有為法,如夢幻泡影 】OracleNull
- [提問交流]建立模型,新增屬性,欄位型別如何設定2位小數的欄位型別模型型別
- MySQL中欄位型別與合理的選擇欄位型別;int(11)最大長度是多少?varchar最大長度是多少?MySql型別
- 修改欄位資料型別的方法資料型別
- mysql和mongodb替換欄位中某字元MySqlMongoDB字元
- laravel-query-builder 對於欄位 值為 null的排序方式LaravelUINull排序