資料庫常以代碼(0/1、01~07)儲存狀態,前端顯示卻需呈現「是/否」、「轉收/現付」等中文。Oracle CASE WHEN 表達式可在 SQL 層直接完成轉換,前端 GridView 直接綁定別名欄位,免去程式碼端判斷邏輯。
CASE 欄位名
WHEN '值1' THEN '顯示文字1'
WHEN '值2' THEN '顯示文字2'
ELSE '預設文字'
END AS 別名
SELECT '0' AS CHECKED,
ID, NAME, STATE,
CASE IMPORT_STATE WHEN '0' THEN '否' ELSE '是' END AS BZZT
FROM OU_INTERFACE
WHERE 1=1;
GridView 設定 DataField="BZZT" 即可直接顯示中文。
SELECT '0' AS CHECKED, 表名.*,
CASE IMPORT_STATE WHEN '0' THEN '否' ELSE '是' END AS BZZT
FROM 表名
WHERE IMPORT_STATE = '傳入變數值';
SELECT '0' AS CHECKED,
CASE LX
WHEN '01' THEN '轉收'
WHEN '02' THEN '轉付'
WHEN '03' THEN '現收'
WHEN '04' THEN '現付'
WHEN '05' THEN '內轉'
WHEN '06' THEN '應收'
WHEN '07' THEN '應付'
END AS BZZT
FROM 表名;
若漏寫 END,Oracle 會拋出 ORA-00905: missing keyword 錯誤,如下圖:
BZZT),避免使用原始代碼欄位名。ELSE 處理未預期代碼,避免回傳 NULL 導致前端顯示空白。CASE 也可用於 ORDER BY、WHERE、GROUP BY 等子句,彈性極高。