Jako table1.value
kolumna jest indeksowana, nie chcesz manipulować nią w celu porównania, ponieważ uniemożliwiłoby to użycie indeksu. Musisz więc zmienić szukaną wartość:
SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)
Oracle zrobi to jednak niejawnie z wyświetlonym zapytaniem i nadal będzie używać indeksu. I to samo, jeśli dołączasz do stołów, ale to, czy podczas łączenia będziesz dopasowywać, czy przycinać, zależy od tego, który stół jest kierowcą:
SELECT table1.ID, table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45', 12)
Lub:
SELECT table1.ID
FROM table2
JOIN table1 ON table1.value = RPAD(table2.value, 12)