Оператор выбора выглядит так:
SELECT replace ( replace ( replace ( replace (table.ADDRESS,'Scarborough',' XXScarborough '), 'North York','XXX York '),'Toronto','XXXToronto '),'ON','NON ') as address,...
Одной из альтернатив является сохранение шаблона и замены в ассоциативном массиве, поместив его в с функцией предложения . Хотя он не короче вашей замены, он определенно должен быть менее «запутанным».
WITH FUNCTION my_replace ( inp VARCHAR2 ) RETURN VARCHAR2 IS v_out VARCHAR2(1000) := inp; TYPE v_astype IS TABLE OF VARCHAR2(40) INDEX BY VARCHAR(40); v_pat v_astype; v_idx VARCHAR2(40); BEGIN v_pat('Scarborough') := (' XXScarborough '); v_pat('North York') := ('XXX York '); v_pat('Toronto') := ('XXXToronto '); v_pat('ON') := ('NON '); v_idx := v_pat.first; WHILE v_idx IS NOT NULL LOOP v_out := replace(v_out,v_idx,v_pat(v_idx) ); v_idx := v_pat.next(v_idx); END LOOP; RETURN v_out; END; SELECT my_replace(t.ADDRESS) --,other columns FROM mytable t;
Демо