连接两列数据

时间:2014-06-28 09:53:13

标签: sql oracle plsql oracle11g oracle10g

我在桌子下面。

enter image description here

现在在上表ENO中,ENAME,Edept是现有列。现在我想要计算上面的最终字符串。

请帮我查询以获取FINAL列结果。

提前致谢!!

2 个答案:

答案 0 :(得分:1)

您可以混合使用SUBSTR和INSTR函数 -

请参阅演示:http://sqlfiddle.com/#!4/ad1d4/40/0

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

答案 1 :(得分:0)

如果您经常需要。如果该表没有其他许多查询。

您可以在表格中添加列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;