我的要求是写一个案例陈述,如下所述。但我没有得到正确的数据。
SELECT DIRECCION
,CASE WHEN DIRECCION like'%PISO [^0-9]%' THEN 'PISO [0-9]'
ELSE 'PISO 1' END
FROM TBL_SAR_SALAS
我认为我找到数字字符的尝试不起作用...此外,ISNUMERIC也不受支持。
如何解决此问题?
答案 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'