Tolik způsobů, jak to udělat. Než se pustíte do konkrétní metody, bylo by dobré podívat se na plán vysvětlení různými způsoby. Například pokud existuje index založený na funkcích u EMPLOYEE například SUBSTR(id, 2, LENGTH(id) - 1) pak to budete chtít použít ve svém dotazu:
SELECT e.name, i.name
FROM employee e INNER JOIN instructor i
ON SUBSTR(e.id, 2, LENGTH(e.id) - 1) = SUBSTR(i.id, 2, LENGTH(i.id) - 1);
Další otázkou je, zda hodnoty v id sloupce jsou vždy stejně dlouhé v EMPLOYEE a INSTRUCTOR . Co když jsou různě dlouhé? Možná má jeden více vycpávek než druhý. Budou také vždy číslice kromě úvodního u ? Pokud ano, pak by možná stálo za to vyzkoušet bezpečné TO_NUMBER() konverze:
SELECT e.name, i.name
FROM employee e INNER JOIN instructor i
ON TO_NUMBER(REGEXP_SUBSTR(e.id, '\d+$')) = TO_NUMBER(REGEXP_SUBSTR(i.id, '\d+$'));
Ještě jedna věc, kterou byste však měli zvážit – existuje důvod pro úvodní u v EMPLOYEE id sloupec? Mohou tam být další hlavní postavy? Má úvodní u stát za něčím (porušuje první normální formu, ale to se stává)?