準備報表輸入
本例來源用原文字 yes 表示已選,no 未選,1 是未預期原代碼。WHERE flag_text 會用 SQLite 數字真值轉換,不按來源文字意思。
以下記錄及報表規則均為原創假設。在新 SQLite 測試資料庫重做建表,預覽包含此小型例子每張表。
| 編號 | 原文字旗標 |
|---|---|
| A | yes |
| B | no |
| C | 1 |
CREATE TABLE flags(id TEXT PRIMARY KEY,flag_text TEXT); INSERT INTO flags VALUES('A','yes'),('B','no'),('C','1');比較錯誤及更正結果
SELECT id,flag_text FROM flags WHERE flag_text ORDER BY id;| 編號 | 原文字旗標 |
|---|---|
| C | 1 |
SELECT id,flag_text FROM flags WHERE flag_text='yes' ORDER BY id;| 編號 | 原文字旗標 |
|---|---|
| A | yes |
錯誤只回 C=1,真正已選清單是 A=yes。未預期值仍留輸入另查。
用新副本測邊界
加 NULL 旗標 D,未確認 yes,不能入更正清單。
另開新資料庫重做原建表,才套下列改動及更正查詢。空結果在表內用已標明空結果文字表示,不是假資料行。
INSERT INTO flags VALUES('D',NULL);
SELECT id,flag_text FROM flags WHERE flag_text='yes' ORDER BY id;| 編號 | 原文字旗標 |
|---|---|
| A | yes |
按本例文字代碼,哪項確認已選?
查看參考答案
只有 A,C 的文字 1 雖被數字運算當真,仍不是指定 yes。