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)?