Что я должен сделать, чтобы слово отображалось в каждой строке? любым методом - PullRequest
2 голосов
/ 15 марта 2019

Мне нужно отобразить oracle как вывод

O

R

A

C

L

E

Я пытался, и приведенный ниже синтаксис был моим лучшим, но я не получил желаемый результат

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

Я знаю, что мы можем сделать это с помощью предложения level , не знаю как. И есть ли способ, кроме уровень пожалуйста, поделитесь

Ответы [ 2 ]

3 голосов
/ 15 марта 2019

Вы хотите взять один символ из входной строки и отобразить его в каждой строке, поэтому используйте:

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 голос
/ 15 марта 2019

Вы также можете решить проблему с помощью рекурсии. Это решение не обязательно может быть лучшим, но должно показать, как решить проблему, в противном случае

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...