跳至內容
Astera Technology

匯入前怎樣分辨漏填、空格和有效的零金額?

把電郵及金額逐欄查核;空白電郵不合格,但零金額不等於漏填。

下載完整個案資料及參考答案 ↓

先訂清楚要判斷甚麼,再準備資料

電郵只有空格也屬漏填,先整理空格,再把空字串視為缺漏。金額則用空值判斷;零已經是輸入值,是否可接受由業務規則決定。逐欄列出缺漏,覆核同事便可一次改齊,不必只看到一個「失敗」標記。

以下全部是假設資料。請在新的 SQLite 測試資料庫建立各表,再執行唯讀查詢。數量以件計,金額以港元的分作整數儲存;顯示港元時除以 100。

假設輸入節錄;完整相關資料見下方 SQL
編號外部編號原電郵金額(分)業務日期
1X1a@example.test100002026-10-01
2X2[1 個空格]2000003/04/2026
3X3NULL(未知或沒有資料)NULL(未知或沒有資料)NULL(未知或沒有資料)
4X4d@example.test02026-02-30
下載可編輯 CSV ↓
可直接執行的完整假設資料(SQLite)
CREATE TABLE import_rows(id INTEGER PRIMARY KEY, external_id TEXT, email TEXT, amount_cents INTEGER, business_date TEXT);
CREATE TABLE sync_attempts(id INTEGER PRIMARY KEY, external_id TEXT, outcome TEXT);
CREATE TABLE target_records(id TEXT PRIMARY KEY, external_id TEXT UNIQUE);
INSERT INTO import_rows VALUES (1,'X1','a@example.test',10000,'2026-10-01'),(2,'X2',' ',20000,'03/04/2026'),(3,'X3',NULL,NULL,NULL),(4,'X4','d@example.test',0,'2026-02-30');
INSERT INTO sync_attempts VALUES (1,'X1','success'),(2,'X2','success'),(3,'X3','failed');
INSERT INTO target_records VALUES ('T1','X1');

執行查詢,核對實際結果

SQLite 唯讀查詢
SELECT id,
 CASE WHEN NULLIF(TRIM(email),'') IS NULL THEN 1 ELSE 0 END AS missing_email,
 CASE WHEN amount_cents IS NULL THEN 1 ELSE 0 END AS missing_amount
FROM import_rows WHERE NULLIF(TRIM(email),'') IS NULL OR amount_cents IS NULL
ORDER BY id;
以上 SQLite 假設資料的查詢結果
編號電郵漏填(1=是)金額漏填(1=是)
210
311
下載可編輯 CSV ↓

第 2 筆只欠電郵;第 3 筆同時欠電郵及金額。第 4 筆有填零金額,通過「有沒有填」的檢查,但日期仍有問題。必填欄位齊全,不等於整筆資料可以直接匯入。

按資料範圍使用結果

這是完整性檢查,未驗證電郵能否送達,也不是會計規則。欄位型別、數值範圍及對照須另訂。未通過的資料留在更正檔,保留原外部編號供重做匯入。

本例的建表、資料及結果已在 SQLite 執行。套用時先在系統測試副本調整欄位及狀態規則,再與流程負責人核對預期結果。其他資料庫平台未經測試。

相關資源