Tyle sposobów, aby to zrobić. Dobrym pomysłem byłoby przyjrzenie się planowi wyjaśniania pod kątem różnych sposobów, zanim zdecydujesz się na konkretną metodę. Na przykład, jeśli istnieje indeks oparty na funkcjach dla EMPLOYEE
na przykład SUBSTR(id, 2, LENGTH(id) - 1)
wtedy będziesz chciał użyć tego w zapytaniu:
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);
Kolejne pytanie dotyczy tego, czy wartości w id
kolumny są zawsze tej samej długości w EMPLOYEE
i INSTRUCTOR
. A jeśli mają różne długości? Może jeden ma więcej wyściółki niż drugi. Czy zawsze będą to cyfry? oprócz wiodącego u
? Jeśli tak, warto wypróbować bezpieczny TO_NUMBER()
konwersja:
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+$'));
Jednak jeszcze jedna rzecz, którą możesz chcieć rozważyć — czy istnieje powód dla wiodącego u
w EMPLOYEE
id
kolumna? Czy mogą być inne główne postacie? Czy wiodący u
oznaczać coś (naruszenie pierwszej formy normalnej, ale tak się dzieje)?