根据Oracle中的条件替换字符串

问题描述


我正在处理一些需求,需要根据某些特定条件显示一些数据。
以下是我在此处提供的值作为示例。
条件类似于如果该列的前4个字符为 NUMERIC ,则它将进一步检查其是否具有空格,否则在4个字符后给出右侧部分。
如果将查找 SPACE ,那么如果 SPACE 的右侧具有任何 DOT ,它将进一步查找,如果是,则给出右侧 DOT 的一部分。

Column1         Column_new   
-----------     ----------         
22 50.IND1 E    IND1 E
RYST 22S2E      22S2E
2608.S1 E       S1 E
0540BS2         BS2

这是我正在尝试的代码,但由于我在同一case语句中对多个条件感到困惑,因此仍需要进行一些修改

SELECT COLUMN1,CASE
    WHEN LENGTH(TRIM(TRANSLATE(SUBSTR(t1.COLUMN1,4),'0123456789',' '))) IS NULL
    THEN (
      CASE
        WHEN instr(t1.COLUMN1,'.')>0
        THEN SUBSTR(t1.COLUMN1,instr(t1.COLUMN1,'.')+1,LENGTH(t1.COLUMN1))
        ELSE t1.COLUMN1
      END)
    WHEN instr(t1.COLUMN1,' ')>0
    THEN trim(SUBSTR(t1.COLUMN1,' ')+1,LENGTH(t1.COLUMN1)))
      --     when instr(t1.COLUMN1,'.')>0
      --        then (case when instr(trim(substr(t1.COLUMN1,' '),length(t1.COLUMN1))),'.')>0 then substr(trim(substr(t1.COLUMN1,ELSE t1.COLUMN1
  END AS COLUMN_NEW
FROM TABLE t1
WHERE ...
AND ...
AND ... ;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)