2012-09-29 54 views
0

好的...這就是我所得到的。有一個Oracle數據庫表有一個數據類型爲VARCHAR的列。該列稱爲「值」,包含表示不同值的字符串。所以有些記錄在這個列中有一個數字,其他的記錄有科學記數法,其他日期,其他實際字符等,但是它們都將作爲字符串存儲在這個「值」列中。確定Oracle中字符串值的數據類型

我需要編寫一個視圖,該視圖可以查詢此表並確定「值」列中的字符串表示哪種數據類型。我知道我可以做PL/SQL來做到這一點,但我無法創建一個存儲過程,並且需要在視圖中 - 出於其他原因。

+3

所以你有一列'價值'與一堆隨機的東西呢?是否有另一列,比如'valueType',它告訴你類別是?因爲如果沒有,你只是得到了一列垃圾,除PL/SQL之外,沒有什麼可以做的。 – APC

+1

另外,*爲什麼*您沒有權限使用PL/SQL來執行此操作?這似乎是一個嚴重搞砸的應用程序,並且禁止使用最好的工具對它進行分類顯然是愚蠢的。 – APC

回答

1

我認爲你需要有一個額外的列描述存儲在Value

Value  VARCHAR2, 
ValueType VARCHAR2 -- e.g. Age, Name, Money 

視圖中的值,那麼你用一個CASE語句來確定

CASE 
    WHEN ValueType = 'Age' THEN 'integer' 
    WHEN ValueType = 'Name' THEN 'string' 
    WHEN ValueType = 'Money' THEN 'decimal' 
END As ColumnValueType 

您還可以使用正則表達式

+0

我不認爲有另一列。我只能看到一列的「價值」。 – CodeMoto

+0

我認爲Oracle 10g及以上版本有正則表達式函數,您可以使用,但也可能會複雜 – codingbiz

+0

@EastCarolinaPirate - 「我不認爲」請確定。 「僅限可用」意味着什麼?有人禁止你看到桌子的全部投影嗎?還是它真的只有一列? – APC

相關問題