我该怎么做才能在每一行中显示一个单词?通过任何方法

时间:2019-03-15 12:21:53

标签: sql string oracle

我需要显示 oracle 作为这样的输出

  

O

     

R

     

A

     

C

     

L

     

E

我尝试过,以下语法是我的最佳选择,但是我没有得到想要的结果

Select 'oracle' from dual connect by level<=10; 

我知道我们可以通过 level 子句来做到这一点,因为我不知道怎么做。除了 level 以外,还有什么方法可以共享

2 个答案:

答案 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