Case语句在Oracle中不使用数值

时间:2016-11-07 19:02:16

标签: database oracle

我的要求是写一个案例陈述,如下所述。但我没有得到正确的数据。

SELECT DIRECCION
        ,CASE WHEN DIRECCION  like'%PISO [^0-9]%' THEN 'PISO [0-9]'
         ELSE 'PISO 1' END
  FROM TBL_SAR_SALAS

我认为我找到数字字符的尝试不起作用...此外,ISNUMERIC也不受支持。

如何解决此问题?

2 个答案:

答案 0 :(得分:0)

我不确定是否PISO是一个空格,而是一个数字......或者是什么,所以我们必须处理{{3} },但这给了你一般的想法。

regexp_Like似乎是你之后的功能......

WITH cte as (Select 'PISO 123' as Direccion from dual union all
             SELECT 'PISO123' FROM DUAL UNION ALL
             SELECT '123 PISO' FROM DUAL)

SELECT direccion
     , Case when REGEXP_LIKE(Direccion ,'PISO[^0-9]') then 'PISO [0-9]' else 'PISO 1' end
FROM cte

答案 1 :(得分:0)

也许是这样的?注意第二个例子;默认情况下,Oracle在字符串中区分大小写。另请注意使用.VehicleTimeline_scroll_2WSry {margin-bottom: -14px}:如果找不到所需的子字符串 - 也就是说,如果coalesce()返回regexp_substr() - 则结果为null。如果您希望查询忽略大小写,则可以轻松调整(使用[{1}}的参数)。

'PISO 1'