没有存储过程/函数的分隔符的Oracle SQL拆分

had*_*des 0 sql oracle string-split

我想在oracle db中通过分隔符(|)拆分列.我怎样才能做到这一点?

在db中,值将存储为:

领域

AP1|Apple Juice|100
Run Code Online (Sandbox Code Playgroud)

我想分开它成为:

Field1 | Field2 | Field3

AP1 Apple Juice 100    
Run Code Online (Sandbox Code Playgroud)

我不知道确切的查询,但基本上下面是我想要的.

select split(Field) as Field1, split(Field) as Field2, split(Field) as Field3
Run Code Online (Sandbox Code Playgroud)

我想只使用SQL(不创建任何存储过程或函数).

Ren*_*ern 5

正则表达式:

with sample_data as
    (select 'AP1|Apple Juice|100' str
    from dual
)
select str,
     regexp_substr(str, '[^|]+', 1, 1) str1,
     regexp_substr(str, '[^|]+', 1, 2) str2,
     regexp_substr(str, '[^|]+', 1, 3) str3
from sample_data;
Run Code Online (Sandbox Code Playgroud)