跳至內容
Astera Technology

客戶電郵只差大小寫或空格,怎樣找出待核對紀錄?

先找出空格及大小寫整理後相同的電郵,交同事判斷是否同一客戶。

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

比較時整理首尾空格及大小寫,原值仍要保留供覆核。空白或漏填電郵先排除,不能把所有未知地址當成一組重複。相同電郵可作查核線索,但公司共用信箱可能合理地屬於多個帳戶。

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

假設輸入節錄;完整相關資料見下方 SQL
編號原電郵有效(1=是)
C1 Alex@example.test 1
C2alex@EXAMPLE.test1
C3NULL(未知或沒有資料)1
C4bee@example.test1
C5old@example.test0
下載可編輯 CSV ↓
可直接執行的完整假設資料(SQLite)
CREATE TABLE customer_accounts(id TEXT PRIMARY KEY, email TEXT, owner_id TEXT, active INTEGER);
CREATE TABLE staff(id TEXT PRIMARY KEY, active INTEGER);
INSERT INTO staff VALUES ('S1',1),('S2',0);
INSERT INTO customer_accounts VALUES ('C1',' Alex@example.test ','S1',1),('C2','alex@EXAMPLE.test','S1',1),('C3',NULL,NULL,1),('C4','bee@example.test','S2',1),('C5','old@example.test','S2',0);

執行查詢,核對實際結果

SQLite 唯讀查詢
SELECT LOWER(TRIM(email)) AS email_key,COUNT(*) AS account_count
FROM customer_accounts WHERE active=1 AND NULLIF(TRIM(email),'') IS NOT NULL
GROUP BY LOWER(TRIM(email)) HAVING COUNT(*)>1 ORDER BY email_key;
以上 SQLite 假設資料的查詢結果
整理後電郵帳戶數
alex@example.test2
下載可編輯 CSV ↓

C1 和 C2 整理後都是 alex@example.test,共兩筆。C3 沒填電郵,未被當成重複。合併前須核對帳戶身分、訂單及相關同意紀錄,不能只挑最細編號便刪走其他資料。

按資料範圍使用結果

SQLite LOWER 足以處理本例的 ASCII 地址,並非完整國際化電郵規則。不能對所有供應商一律刪除句點或加號後綴。查詢只列候選紀錄,沒有決定保留哪一筆。

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

相關資源