Tanti modi per farlo. Sarebbe una buona idea esaminare il piano di spiegazione per vari modi prima di impegnarsi in un metodo particolare. Ad esempio, se è presente un indice basato su funzione su EMPLOYEE
come SUBSTR(id, 2, LENGTH(id) - 1)
quindi vorrai usarlo nella tua query:
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);
Un'altra domanda è se i valori in id
le colonne sono sempre della stessa lunghezza in EMPLOYEE
e INSTRUCTOR
. E se sono di lunghezza diversa? Forse uno ha più imbottitura di un altro. Inoltre, saranno sempre cifre a parte un u
iniziale ? In tal caso, potrebbe essere utile provare un TO_NUMBER()
sicuro conversione:
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+$'));
Un'altra cosa che potresti prendere in considerazione, tuttavia:c'è un motivo per il principale u
nel EMPLOYEE
id
colonna? Possono esserci altri protagonisti? Il principale u
rappresentare qualcosa (violando la prima forma normale, ma succede)?