準備報表輸入
本例匯出只移一次開頭 AB。trim(code,'AB') 卻會把兩端所有 A、B 刪掉。須先查前綴再截取,不符前綴的代碼照留。
以下記錄及報表規則均為原創假設。在新 SQLite 測試資料庫重做建表,預覽包含此小型例子每張表。
| 編號 | 代碼 |
|---|---|
| 1 | ABBA |
| 2 | ABXAB |
| 3 | CABA |
CREATE TABLE labels(id INTEGER PRIMARY KEY,code TEXT NOT NULL); INSERT INTO labels VALUES(1,'ABBA'),(2,'ABXAB'),(3,'CABA');比較錯誤及更正結果
SELECT id,trim(code,'AB') AS suffix FROM labels ORDER BY id;| 編號 | 後綴 |
|---|---|
| 1 | 空字串(長度 0) |
| 2 | X |
| 3 | C |
SELECT id,CASE WHEN substr(code,1,2)='AB' THEN substr(code,3) ELSE code END AS suffix FROM labels ORDER BY id;| 編號 | 後綴 |
|---|---|
| 1 | BA |
| 2 | XAB |
| 3 | CABA |
ABBA 應成 BA、ABXAB 成 XAB,CABA 不改。錯誤值空白/X/C 說明 TRIM 不是移除前綴。
用新副本測邊界
正好 AB 的代碼,移完唯一前綴後後綴為空。
另開新資料庫重做原建表,才套下列改動及更正查詢。空結果在表內用已標明空結果文字表示,不是假資料行。
INSERT INTO labels VALUES(4,'AB');
SELECT id,CASE WHEN substr(code,1,2)='AB' THEN substr(code,3) ELSE code END AS suffix FROM labels ORDER BY id;| 編號 | 後綴 |
|---|---|
| 1 | BA |
| 2 | XAB |
| 3 | CABA |
| 4 | 空字串(長度 0) |
ABXAB 後綴應留甚麼?
查看參考答案
XAB,只移開頭一次 AB,末尾 AB 屬後綴。