我在桌子下面。
现在在上表ENO中,ENAME,Edept是现有列。现在我想要计算上面的最终字符串。
请帮我查询以获取FINAL列结果。
提前致谢!!
答案 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;