我需要查找值是否为数字。例如,我有一个数据类型为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 ;
答案 0 :(得分:1)
您可以使用regexp_like
查看该值是否只包含数字:
select (case when regexp_like(date, '[^0-9]') then 'NonNumeric'
else 'Numeric'
end)
注意:这仅检查数字。如果您允许其他字符(例如' - ','。',' +',','),那么为此目的,可以很容易地修改正则表达式。