Begitu banyak cara untuk melakukan ini. Ini akan menjadi ide yang baik untuk melihat rencana penjelasan untuk berbagai cara sebelum melakukan metode tertentu. Misalnya, jika ada indeks berbasis fungsi pada EMPLOYEE seperti SUBSTR(id, 2, LENGTH(id) - 1) maka Anda ingin menggunakannya dalam kueri Anda:
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);
Pertanyaan lain adalah apakah nilai dalam id kolom selalu sama panjang di EMPLOYEE dan INSTRUCTOR . Bagaimana jika panjangnya berbeda? Mungkin yang satu memiliki lebih banyak padding daripada yang lain. Juga, apakah mereka akan selalu menjadi digit selain u leading terkemuka ? Jika demikian, mungkin ada baiknya mencoba TO_NUMBER() yang aman konversi:
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+$'));
Namun, satu hal lain yang mungkin ingin Anda pertimbangkan -- apakah ada alasan untuk u . utama di EMPLOYEE id kolom? Bisakah ada karakter utama lainnya? Apakah u . yang terkemuka berdiri untuk sesuatu (melanggar bentuk normal pertama, tapi itu terjadi)?