2013年9月17日 星期二

Status欄位(1, 0)之異動方法

本範例介紹以簡便方式異動狀態欄位(Status),網頁上常操作進行說明,
參考來源
Javascript
說明
Web Page
javascript:UpdateStatus('財金系', 1);
網頁資料為0,按下後傳入並變更為1
資料庫
javascript:UpdateStatus('財金系');
直接判斷資料庫值,異動為反向值。

以下列出參考資料庫現值並直接異動之方法,SQL及說明如下:
方法
SQL
說明
CASE WHEN
UPDATE #Dept
   SET Status = CASE WHEN Status = 1 THEN 0 ELSE 1 END
   --SET Status = 1  --指定異動為1
WHERE 1=1
     AND Dept_Id = '財金系'
ü  CASE WHEN 判斷資料庫現值,若為1則存入0,反之則1

餘數運算
UPDATE #Dept
   SET Status = (Status +1) % 2      --MSSQL
   --SET Status = MOD(Status +1,  2) --ORACLE
WHERE 1=1
     AND Dept_Id ='財金系'
: ORACLE使用者請自行改Table Name
ü  利用餘數運算,MSSQL用『%』、ORACLEMOD函數。

數學運算
UPDATE #Dept
   SET Status = 1 - Status     
WHERE 1=1
     AND Dept_Id = '財金系'

ü  利用數學運算特性,若現值為1,運算後為01-1 =0),現值為0,則運算後為11-0 =1)。



資料產生(MSSQL為例,ORACLE改為CTAS方式即可)
SELECT '資工系' Dept_Id, 1 Status
         INTO #Dept
UNION ALL
SELECT '資科系', 1
UNION ALL
SELECT '財金系', 1
UNION ALL
SELECT '械械系', 0
UNION ALL

SELECT '企管系', 1

沒有留言:

張貼留言