Толкова много начини да направите това. Би било добра идея да разгледате плана за обяснение за различни начини, преди да се ангажирате с определен метод. Например, ако има базиран на функция индекс на EMPLOYEE
като SUBSTR(id, 2, LENGTH(id) - 1)
тогава ще искате да използвате това в заявката си:
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);
Друг въпрос е дали стойностите в id
винаги са с еднаква дължина в EMPLOYEE
и INSTRUCTOR
. Ами ако са с различна дължина? Може би един има повече подплата от друг. Освен това винаги ли ще бъдат цифри с изключение на водещ u
? Ако е така, тогава може би си струва да опитате безопасен TO_NUMBER()
преобразуване:
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+$'));
Едно друго нещо обаче, което може да искате да обмислите -- има ли причина за водещото u
в EMPLOYEE
id
колона? Може ли да има други главни герои? Прави водещия u
подкрепяте нещо (нарушаване на първата нормална форма, но това се случва)?