Zoveel manieren om dit te doen. Het zou een goed idee zijn om het uitlegplan voor verschillende manieren te bekijken voordat u zich tot een bepaalde methode verbindt. Als er bijvoorbeeld een functie-gebaseerde index is op EMPLOYEE
zoals SUBSTR(id, 2, LENGTH(id) - 1)
dan wil je dat in je zoekopdracht gebruiken:
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);
Een andere vraag is of de waarden in de id
kolommen zijn altijd even lang in EMPLOYEE
en INSTRUCTOR
. Wat als ze van verschillende lengte zijn? Misschien heeft de een meer vulling dan de ander. Zijn het ook altijd cijfers afgezien van een leidende u
? Zo ja, dan is het misschien de moeite waard om een veilige TO_NUMBER()
. te proberen conversie:
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+$'));
Een ander ding dat u misschien wilt overwegen -- is er een reden voor de leidende u
in de EMPLOYEE
id
kolom? Kunnen er andere hoofdpersonen zijn? Heeft de leidende u
ergens voor staan (in strijd met de eerste normaalvorm, maar dat gebeurt)?