首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle CASE WHEN 將數字代碼轉換為中文顯示:GridView 綁定實戰

     編輯:Oracle 資料庫基礎

資料庫常以代碼(0/1、01~07)儲存狀態,前端顯示卻需呈現「是/否」、「轉收/現付」等中文。Oracle CASE WHEN 表達式可在 SQL 層直接完成轉換,前端 GridView 直接綁定別名欄位,免去程式碼端判斷邏輯。

基本語法

CASE 欄位名
  WHEN '值1' THEN '顯示文字1'
  WHEN '值2' THEN '顯示文字2'
  ELSE '預設文字'
END AS 別名

實戰範例

範例 1:簡單雙狀態轉換(0→否,1→是)

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" 即可直接顯示中文。

範例 2:帶參數查詢

SELECT '0' AS CHECKED, 表名.*,
       CASE IMPORT_STATE WHEN '0' THEN '否' ELSE '是' END AS BZZT
FROM 表名
WHERE IMPORT_STATE = '傳入變數值';

範例 3:多代碼對應(類別轉換)

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 關鍵字

若漏寫 END,Oracle 會拋出 ORA-00905: missing keyword 錯誤,如下圖:

CASE 遺漏 END 錯誤畫面

最佳實務建議

  • 集中在 SQL 層轉換:減少應用程式碼邏輯,利於維護與效能(資料庫內部處理字串比網路傳輸後再處理快)。
  • 使用別名:前端綁定時直接指定別名(如 BZZT),避免使用原始代碼欄位名。
  • ELSE 子句:務必加上 ELSE 處理未預期代碼,避免回傳 NULL 導致前端顯示空白。
  • CASE 也可用於 ORDER BY、WHERE、GROUP BY 等子句,彈性極高。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved