NULL值處理__分區_SQL語法參考_雲數據庫 OceanBase-阿裏雲
NULL值視為0
對於分區禁止在空值(NULL)上沒有進行處理,無論它是一個列值還是一個用戶定義表達式的值。一般而言,在這種情況下把 NULL 視為 0。如果你希望回避這種做法,你應該在設計表時不允許空值;最可能的方法是,通過聲明列“NOT NULL”來實現這一點。
說明:此處的 NULL 值,是指表達式計算結果為 NULL,當作 0 處理。
舉例
如果插入一行到按照 RANGE 分區的表,該行用來確定分區的列值為 NULL,分區將把該 NULL 值視為 0。例如,考慮下麵的兩個表,表的創建和插入記錄如下:
mysql> CREATE TABLE tnrange (
-> id INT,
-> name VARCHAR(5)
-> )
-> PARTITION BY RANGE(id) (
-> PARTITION p1 VALUES LESS THAN (1),
-> PARTITION p2 VALUES LESS THAN MAXVALUE
-> );
mysql> INSERT INTO tnrange VALUES (NULL, 'jim');
mysql> SELECT * FROM tnrange;
+------+------+
| id | name |
+------+------+
| NULL | jim |
+------+------+
1 row in set (0.00 sec)
在表 tnrange 中,id 列沒有聲明為“NOT NULL”,這意味著它們允許 Null 值。可以通過刪除這些分區,然後重新運行 SELECT 語句,來驗證這些行被保存在每個表的 p1 分區中:
mysql> ALTER TABLE tnrange DROP PARTITION p1;
Query OK, 0 rows affected (0.16 sec)
mysql> SELECT * FROM tnrange;
Empty set (0.00 sec)
在按 HASH 分區的情況下,任何產生 NULL 值的表達式都視同好像它的返回值為 0。我們可以通過先創建一個按 HASH 分區的表,然後插入一個包含有適當值的記錄,再檢查對文件係統的作用,來驗證這一點。假定有使用下麵的語句在測試數據庫中創建了一個表 tnhash:
CREATE TABLE tnhash (
id INT,
name VARCHAR(5)
)
PARTITION BY HASH(id)
PARTITIONS 2;
現在在表 tnhash 中插入一行id列值為 NULL 的行,然後驗證該行已經被插入
mysql> INSERT INTO tnhash VALUES (NULL, 'sam');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM tnhash;
+------+------+
| id | name |
+------+------+
| NULL | sam |
+------+------+
1 row in set (0.01 sec)
對於任意的整數 N,NULL MOD N 的值總是等於 NULL。這個結果在確定正確的分區方麵被認為是 0。回到係統 shell(仍然假定 bash 用於這個目的) ,通過再次列出數據文件,可以看出值被成功地插入到第一個分區(默認名稱為 p0)中:
mysql> SELECT * FROM tnhash partition(p0);
+------+------+
| id | name |
+------+------+
| NULL | sam |
+------+------+
1 row in set (0.00 sec)
最後更新:2016-11-24 11:23:47
上一篇:
子分區__分區_SQL語法參考_雲數據庫 OceanBase-阿裏雲
下一篇:
分區管理__分區_SQL語法參考_雲數據庫 OceanBase-阿裏雲
FreeBSD係統盤擴容、分區、掛載__擴容磁盤概覽_磁盤_用戶指南_雲服務器 ECS-阿裏雲
移出策略__使用須知_用戶指南_彈性伸縮-阿裏雲
OSS數據源配置__數據源配置_數據同步手冊_用戶操作指南_大數據開發套件-阿裏雲
使用雲服務監控__快速入門_雲監控-阿裏雲
ServiceParameterMap__數據類型_API_API 網關-阿裏雲
TensorFlow最佳實踐__深度學習最佳實踐_高性能計算-阿裏雲
設備狀態__產品管理_控製台使用手冊_阿裏雲物聯網套件
SnapshotType__數據類型_API 參考_雲服務器 ECS-阿裏雲
雲服務器 ECS 網絡和安全性之安全組
站點配置__輿情分析_快速開始_公眾趨勢分析-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲