2012-09-29 25 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

相关问题