对于下面的查询需要一个简化的替代方案。
select trim(lpad(' *',level*2,'* ')) from dual connect by level < 5;
输出:
*
* *
* * *
* * * *
该查询非常简单。
如果你想使用递归子查询因子分解子句,那么你可以这样做:
WITH data ( value, lvl ) AS (
SELECT CAST(' *' AS VARCHAR2(8)), 1 FROM DUAL
UNION ALL
SELECT '* ' || value, lvl + 1
FROM data
WHERE lvl + 1< 5
)
SELECT TRIM(value)
FROM data;
select rpad('*',level*2,' *') from dual connect by level < 5;
我无法再简化它了。