2017-03-13 45 views
0

首先,讓我指出,我的問題將是非常非常接近了這個問題:map-column-data-to-a-value-oracle甲骨文 - 地圖列數據的值

請儘快讀到一個第一。

現在在我的情況下,我需要完全相同的東西,但不是主要查詢。相反,我需要將這些信息作爲查詢的一部分。

我有這個表:

someId | someValue | dataType 
    1 | 500 | 1 
    2 | someValue | 2 

而且我知道該數據類型 「1」 表示 「整數」。我也知道dataType列中其他值的含義。

所以我要選擇表中的所有項目,但有自己的數據類型作爲自己的人類可讀的值,而不是他們的數字:

結果:

1, 500, Integer 
2, someString, String 

嘗試應用的問題的解決方案,我聯繫,我創建了一個子查詢像

SELECT 
someId, 
someValue, 
(
    SELECT CASE 
    WHEN dataType = 1 THEN 'INTEGER' 
    WHEN dataType = 2 THEN 'FLOAT' 
    WHEN dataType = 3 THEN 'TEXT' 
    ELSE 'DATE' 
END 
    myTable 
) as myDataType 

我會得到一個返回超過1分的結果和Oracle會抱怨的子查詢。

由於我直接通過SQL訪問數據庫,我需要一個「純SQL」解決方案。否則,我可以通過映射來解析這個值,比如說PHP。但這在這裏是不可能的。我正在向數據庫拍攝一些查詢,試圖收集關於我們不知道的數據和結構的信息。所以只有SQL可用。

回答

2

擺脫子查詢:

SELECT someId, 
     someValue, 
     CASE 
      WHEN dataType = 1 THEN 'INTEGER' 
      WHEN dataType = 2 THEN 'FLOAT' 
      WHEN dataType = 3 THEN 'TEXT' 
      ELSE 'DATE' 
     END as Datatype 
from myTable 
+0

就像一個魅力。謝謝! – Worp