【发布时间】:2022-11-24 02:37:47
【问题描述】:
如果字符串在前面某处连续有 3 个数字,我试图分隔最后一个字符,该字符应该是字母 [A-F]。
例如, 103C 将返回 2 个单独的字段 103 和 C A103B 将返回 2 个单独的字段 A103 和 B。 FX103D 将返回 2 个单独的字段 FX103 和 D。 LOCATION2 只会返回 LOCATION2,第二个字段将为空白。
我以前用 regexp_like 做过类似的事情,但我对正则表达式一般是新手,所以我不确定我是如何做到这一点的。
对于类似的应用程序,我已经完成了 regexp_like(c_lab.loc_code_from,'^\d{5}[[:alpha:]]') ,它查看前 5 个字符,如果它们是数字,则满足条件并且我相应地将其拆分,如下所示。
CASE
WHEN regexp_like(c_lab.loc_code_from,'^\d{5}[[:alpha:]]')
THEN substr(c_lab.loc_code_from, 1, 5)
ELSE c_lab.loc_code_from
END as "From Location",
CASE
WHEN regexp_like(c_lab.loc_code_from,'^\d{5}[[:alpha:]]')
THEN substr(c_lab.loc_code_from,6,1)
ELSE 'A'
END as "From Level ID"
【问题讨论】:
标签: oracle parsing regexp-like