在oracle中确定具有数字或字符串的列

时间:2016-04-18 10:23:10

标签: string oracle date case

我需要查找值是否为数字。例如,我有一个数据类型为varchar2的日期值。我需要找到列只返回数字或不返回。需要在oracle中处理这个案例。

select case when d.data_type ='DATE' then to_char(to_date(v.value,'YYYYMMDD'),'DD-MM-YY') else v.value end as "Value" from data_type d , value v ;

在此示例中,v.value可以包含字符串值。但是我需要在Case语句中检查列是否具有值作为数字。请帮帮我。预期的查询是

select case when d.data_type ='DATE' and 'd.value haing number only' then to_char(to_date(v.value,'YYYYMMDD'),'DD-MM-YY') else v.value end as "Value" from data_type d , value v ;

1 个答案:

答案 0 :(得分:1)

您可以使用regexp_like查看该值是否只包含数字:

select (case when regexp_like(date, '[^0-9]') then 'NonNumeric'
             else 'Numeric'
        end)

注意:这仅检查数字。如果您允许其他字符(例如' - ','。',' +',','),那么为此目的,可以很容易地修改正则表达式。