我需要显示 oracle 作为这样的输出
O
R
A
C
L
E
我尝试过,以下语法是我的最佳选择,但是我没有得到想要的结果
Select 'oracle' from dual connect by level<=10;
我知道我们可以通过 level 子句来做到这一点,因为我不知道怎么做。除了 level 以外,还有什么方法可以共享
答案 0 :(得分:3)
您要从输入字符串中提取单个字符并将其显示在每一行上,因此请使用:
WITH cteString AS (SELECT 'oracle' AS TEST_STRING FROM DUAL)
SELECT UPPER(SUBSTR(TEST_STRING, LEVEL, 1))
FROM cteString
CONNECT BY LEVEL <= LENGTH(TEST_STRING);
好运。
答案 1 :(得分:1)
您还可以使用递归解决问题。 此解决方案不一定是最好的,但应该说明如何解决该问题
WITH recursion (word, result)as (
SELECT 'oracle' AS word, substr('oracle',1,1) as result FROM DUAL
union all
select substr(word,2,LENGTH(word)-1), substr(word,2,1)
from recursion
where LENGTH(word) > 1
)
select result from recursion