Объединить два столбца данных
У меня есть таблица ниже.
Теперь в приведенной выше таблице 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;