Объединение значений из переменной в Oracle SQL - PullRequest
0 голосов
/ 14 сентября 2018

У меня проблема с моим отчетом SQL.Я передал значения из моего столбца в переменную.Теперь мне нужно показать значения из моей переменной ('@{EMPLOYEES}') с ' ' в начале и конце каждого имени.Чтобы очистить это:

Моя переменная содержит значения как одна длинная строка:

('Employee1, Employee2, Employee3, Employee4')

И мне нужно, чтобы она содержала значения как отдельные строки:

('Employee1','Employee2','Employee3','Employee4')

Можно ли это как-то сделать с помощью функции CONCAT?Если так, то как?

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Поскольку вы пытаетесь разбить строку через запятую и передать вывод в IN-условие в Oracle (как вы поясните в комментариях), вы можете следовать примеру в https://blogs.oracle.com/aramamoo/how-to-split-comma-separated-string-and-pass-to-in-clause-of-select-statement

0 голосов
/ 14 сентября 2018

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

WITH
    setup AS (SELECT 'a,b,c,d' letter FROM DUAL),
    initialize AS
        (SELECT letter || ',' AS letter
           FROM setup),
    splitset (letter, rest) AS
        (SELECT SUBSTR (letter, 1, INSTR (letter, ',') - 1) AS letter
              , SUBSTR (letter, INSTR (letter, ',') + 1)    AS rest
           FROM initialize
         UNION ALL
         SELECT SUBSTR (rest, 1, INSTR (rest, ',') - 1) AS letter
              , SUBSTR (rest, INSTR (rest, ',') + 1)    AS rest
           FROM splitset
          WHERE rest IS NOT NULL)
SELECT letter
  FROM splitset;

Программа установки просто устанавливает некоторые примеры данных, ваш код начинается с 'intialize'.

0 голосов
/ 14 сентября 2018

Попробуйте это:

select chr(39) || 'word' ||chr(39)  from dual
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...