Объединить два столбца данных

У меня есть таблица ниже.

введите описание изображения здесь

Теперь в приведенной выше таблице ENO,ENAME,Edept находятся существующие столбцы. Теперь я хочу вычислить ФИНАЛЬНУЮ КОЛОННУ, как указано выше.

Пожалуйста, помогите мне с запросом, чтобы получить окончательный результат столбца.

Заранее спасибо!!

2 ответа

Вы можете использовать сочетание функций SUBSTR и INSTR следующим образом:

см. демонстрацию по адресу: http://sqlfiddle.com/

select substr(eno,1,instr(eno,'|',1,1)-1)
       ||','||
       substr(ename,1,instr(ename,'|',1,1)-1)
       ||','||
       substr(edept,1,instr(edept,'|',1,1)-1)
       ||'|'||
       substr(eno,instr(eno,'|',1,1)+1,instr(eno,'|',1,2)-3)
       ||','||
       substr(ename,instr(ename,'|',1,1)+1,instr(ename,'|',1,2)-3)
       ||','||
       substr(edept,instr(edept,'|',1,1)+1,instr(edept,'|',1,2)-3)
       ||
       substr(eno,instr(eno,'|',1,2)+1,length(eno)-instr(eno,'|',1,2)+1)
       ||','||
       substr(ename,instr(ename,'|',1,2)+1,length(ename)-instr(ename,'|',1,2)+1)
       ||','||
       substr(edept,instr(edept,'|',1,2)+1,length(edept)-instr(edept,'|',1,2)+1)
as final_column
from tbl

Если у вас есть регулярные потребности. И если эта таблица имеет не так много других запросов.

Вы можете добавить столбец FINAL в таблицу и добавить к нему триггер, например:

CREATE OR REPLACE TRIGGER schema.TBI_name
BEFORE INSERT OR UPDATE
ON schema.TBLE_name 
FOR EACH ROW
DECLARE
BEGIN
        :NEW.FINAL := 1||','||
                   REPLACE(:NEW.eno,'|',',')
                   ||'|'||2||','||
                   REPLACE(:NEW.ename,'|',',')
                   ||'|'||3||','||
                   REPLACE(:NEW.edept,'|',',');
END TBI_name;
Другие вопросы по тегам