Tantas maneras de hacer esto. Sería una buena idea mirar el plan de explicación de varias maneras antes de comprometerse con un método en particular. Por ejemplo, si hay un índice basado en funciones en EMPLOYEE
como SUBSTR(id, 2, LENGTH(id) - 1)
entonces querrás usar eso en tu consulta:
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);
Otra pregunta es si los valores en el id
columna siempre tienen la misma longitud en EMPLOYEE
y INSTRUCTOR
. ¿Qué pasa si son de diferentes longitudes? Tal vez uno tenga más relleno que otro. Además, ¿siempre serán dígitos? además de una u
inicial ? Si es así, entonces podría valer la pena intentar un TO_NUMBER()
seguro conversión:
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+$'));
Sin embargo, es posible que desee considerar otra cosa:¿hay alguna razón para que la u
principal en el EMPLOYEE
id
¿columna? ¿Puede haber otros personajes principales? ¿La u
inicial representar algo (violando la primera forma normal, pero eso sucede)?