You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用dual表用SQL打印星号图案与垂直输出姓名

SQL不使用dual表的两个需求解法

(适用数据库:Oracle,原需求基于Oracle语法体系)

需求1:打印3行三角星号图案

要求输出效果:

*
* *
* * *

实现代码

我们可以用系统自带的all_objects视图(内置行数充足)替代dual生成行序列:

SELECT RPAD('* ', level * 2 - 1, ' ') 
FROM all_objects
WHERE rownum <= 3
CONNECT BY level = rownum;

注:如果不需要星号间空格,和你原有逻辑保持一致的话,把SELECT后的内容换成LPAD(' ', level, '*')即可。


需求2:垂直逐字符输出MANASI

要求输出效果:

M
A
N
A
S
I

实现代码

同样基于序列生成逻辑,逐位截取字符串:

SELECT SUBSTR('MANASI', rownum, 1)
FROM all_objects
WHERE rownum <= LENGTH('MANASI');

如果不想依赖系统视图,也可以用递归CTE实现,完全不需要调用任何现有表:

WITH char_seq(pos) AS (
    SELECT 1 FROM (SELECT 1) t
    UNION ALL
    SELECT pos + 1 FROM char_seq WHERE pos < LENGTH('MANASI')
)
SELECT SUBSTR('MANASI', pos, 1) FROM char_seq;

内容的提问来源于stack exchange,提问作者Mansi Raval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:51:01