使用级别和连接方式子句



对于下面的查询需要一个简化的替代方案。

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;

我无法再简化它了。

最新更新