小编Met*_*etl的帖子

Oracle - 字符串组合排列

我想我有一个复杂的要求.

这是使用Oracle 10.2的组合排列,我能够使用笛卡尔连接解决它,但我认为它需要一些改进才能使它更简单,更灵活.

主要行为.

输入字符串:'一二'

输出:'一''两''一二''二一'

对于我的解决方案,我已将字符串数量限制为5(请注意,输出是靠近阶乘的数字)

SQL:

with My_Input_String as (select 1 as str_id, 'alpha beta omega gama' as str from dual )

--------logic-------

, String_Parse as (
                    SELECT REGEXP_SUBSTR(str, '[^ ]+', 1, ROWNUM) str
                    FROM My_Input_String
                    where rownum < 6 -- string limitation --
                    CONNECT BY level <= LENGTH(REGEXP_REPLACE(str, '([^ ])+|.', '\1') ) 
                  )    

--------CRAP select need refactoring-------

select str from String_Parse
union
select  REGEXP_REPLACE(trim(s1.str||' '||s2.str||' '||s3.str||' '||s4.str||' '||s5.str), '( ){2,}', ' ') as str
from …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql oracle10g

6
推荐指数
1
解决办法
2640
查看次数

标签 统计

oracle ×1

oracle10g ×1

plsql ×1

sql ×1