在ORACLE中如何像表一样显示拆分结果

kx1ctssn  于 2023-08-04  发布在  Oracle
关注(0)|答案(2)|浏览(79)

我需要有一个查询,模拟从字符串拆分开始的对表的查询:
字符串:A-1:B-2:C-3
我尝试了一些类似的,但我不能得到其他值:image

SELECT (SELECT y.column_value AS val
           FROM TABLE(apex_string.split(p_str => r.column_value,
                                        p_sep => '-')) y
          WHERE rownum = 1) AS vall,
        (SELECT y.column_value AS val
           FROM TABLE(apex_string.split(p_str => r.column_value,
                                        p_sep => '-')) y
          WHERE rownum = 2) AS valr
   FROM TABLE(apex_string.split(p_str => 'A-1:B-2:C-3', p_sep => ':')) r

字符串
我需要有一个像图像查询的结果:example

e37o9pze

e37o9pze1#

类似地,使用正则表达式; P7_VALUE已手动输入,并设置为在按Enter键时提交。在真实的情况中,我假设它的值将从数据库中获取,作为多选选择列表或Shuttle项的结果。
查询:

select regexp_substr(column_value, '^\w+') col1,
       regexp_substr(column_value, '\w+$') col2
from table(apex_string.split(:P7_VALUE, ':'))

字符串
测试结果:
x1c 0d1x的数据

eqoofvh9

eqoofvh92#

拆分字符串,然后使用SUBSTR来获得左部分和右部分:

SELECT SUBSTR(COLUMN_VALUE, 1, 1) AS vall,
       SUBSTR(COLUMN_VALUE, 3) AS valr
FROM   TABLE(apex_string.split(p_str => 'A-1:B-2:C-3', p_sep => ':'))

字符串
如果你可以有可变长度的部分,那么也可以使用INSTR

SELECT SUBSTR(COLUMN_VALUE, 1, INSTR(COLUMN_VALUE, '-') - 1) AS vall,
       SUBSTR(COLUMN_VALUE, INSTR(COLUMN_VALUE, '-') + 1) AS valr
FROM   TABLE(apex_string.split(p_str => 'A-1:B-2:C-3', p_sep => ':'))

相关问题