2013-06-12 99 views
0

我有我的SQLite3數據庫中存儲狀態的一些行。通常情況下,這種狀態只是一個單詞,但在某些情況下,還會爲此狀態添加參考號。選擇與條件在SQLite

因此,例如狀態可以包含類似的值:

Created 
Defined 
Converted from xxx <- where xxx is the unique reference number 
Closed/changed from xxx 
... 

等。

現在我想將各種狀態映射到不同的狀態,因爲對於我的目的,這些狀態中的一些具有相同的含義(例如i.E. Created and Defined)。

在Oracle中,我可以使用解碼函數,至少對於唯一字符串。但是,我怎樣才能處理與唯一的ID值。有沒有像我可以使用的decode_like函數?

結果應該是:

Created -> CRT 
Defined -> CRT 
Converted from xxx -> CVT 
Closed/changed from xxx -> CL 

可以這樣甚至可以用SQL做,否則我將不得不實施我的Java代碼這種轉換?

回答

1

使用CASE expression

UPDATE MyTable 
SET Status = CASE 
      WHEN Status = 'Created' OR Status = 'Defined' THEN 'CRT' 
      WHEN Status LIKE 'Converted from %'   THEN 'CVT' 
      WHEN Status LIKE 'Closed/changed from %' THEN 'CL' 
                  ELSE Status 
      END