Като table1.value
е индексирана, не искате да манипулирате това за сравнението, тъй като това би попречило на използването на индекса. Така че ще трябва да промените стойността, която търсите:
SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)
Oracle ще направи това имплицитно със заявката, която показахте, и пак ще използва индекса. Същото е и ако се присъединявате към масите, но дали допълвате или изрязвате по време на присъединяването зависи от това коя таблица е драйверът:
SELECT table1.ID, table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45', 12)
Или:
SELECT table1.ID
FROM table2
JOIN table1 ON table1.value = RPAD(table2.value, 12)