2013-01-25 32 views
1

我有一個查詢,最終將返回可能具有值「1」,「2」或「3」的列,其中1表示紅色,2表示藍色,3表示綠色。如何在查詢中爲返回的值賦予別名?

如何修改查詢,以便而不是返回1,「紅色」返回,2「BLUE」返回等

我希望我的結果是這樣的:

COLOR

RED

RED

GREEN

BLUE

代替:

COLOR

+0

告訴我們查詢! (但是,[解碼](http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm)或[案例](http://docs.oracle.com/cd/B19306_01/ server.102/b14200/expressions004.htm)應該符合你的需求) – xQbert

回答

2
SELECT Decode(MyField, 1, 'RED' 
         2, 'BLUE' 
         3, 'GREEN' 
          'UNDEFINED' as myfieldColor 

FROM myTable 
+0

謝謝,這正是我正在尋找的! – ZakTaccardi

+0

我沒有足夠的聲望來提高您的答案,並且我無法將其標記爲5分鐘內回答! – ZakTaccardi

+0

我並不擔心。很高興提供幫助。如果你不得不多次這樣做,Eran的建議並不壞。具有MyFieldColorType或類似顏色的表的外鍵允許在無需更改代碼(SQL)的情況下實現新顏色的靈活性。但如果你的'顏色'列表是有限的,那麼這是一個合理的解決方案(譯碼) – xQbert

3

或者,更標準符合性:

SELECT CASE WHEN MyField = 1 THEN 'RED' 
      WHEN MyField = 2 THEN 'BLUE' 
      WHEN MyField = 3 THEN 'GREEN' 
      ELSE 'UNDEFINED' 
     EMD myfieldColor 
FROM myTable; 

它也更靈活,因爲你可以在WHEN子句中使用SQL的一個更廣泛的品種。例如:

WHEN MyField = 2 AND Lang = 'SPANISH' THEN 'AZUL' 
+0

10完全可行的解決方案(也在評論部分中指出的情況下,並提供了一個鏈接,直到OP做一些閱讀並確定他們喜歡使用和爲什麼。) – xQbert

+0

甚至沒有看到評論:-)應該是你的答案的一部分! – DCookie

+0

可能,但我傾向於在評論中將實際樣本放在答案和理論中。 – xQbert