我在Oracle 12cR1数据库中有一个数据字段。该字段是产品描述符,字段的开头包含产品ID。然后是产品名称。我需要剥离产品ID。产品ID可以采用以下两种格式之一......数据通常类似于以下内容之一:
请注意,在某些情况下,“ - ”字符是产品名称的一部分,例如
据我所知,我需要删除以下当它开始时......
如何编写Oracle SQL来读取字段并删除这两个不同的子字符串?
谢谢!
答案 0 :(得分:1)
根据您的说明,case
可能是最简单的:
select (case when field like '____ - _____ -%' then substr(field, 15)
else substr(field, 7)
end)
答案 1 :(得分:0)
与第一个' - '相反的子串,然后从该起始位置开始子串到字符串的结尾。
select TRIM(substr('0P3H - Opus NEM', instr('0P3H - Opus NEM', '-', -1, 1) + 1)) from dual
select TRIM(substr('0P22 - 40021 - Order Capture Self Service', instr('0P22 - 40021 - Order Capture Self Service', '-', -1, 1) + 1)) from dual