Sebagai table1.value
kolom diindeks, Anda tidak ingin memanipulasi itu untuk perbandingan karena itu akan mencegah indeks digunakan. Jadi, Anda perlu mengubah nilai yang Anda cari:
SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)
Oracle akan melakukannya secara implisit dengan kueri yang Anda tunjukkan, dan masih akan menggunakan indeks. Dan hal yang sama jika Anda menggabungkan tabel, tetapi apakah Anda melakukan pad atau trim selama penggabungan tergantung pada tabel mana yang menjadi driver:
SELECT table1.ID, table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45', 12)
Atau:
SELECT table1.ID
FROM table2
JOIN table1 ON table1.value = RPAD(table2.value, 12)