Come table1.value
colonna è indicizzata, non si desidera manipolarla per il confronto in quanto ciò impedirebbe l'utilizzo dell'indice. Quindi dovrai modificare il valore che stai cercando:
SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)
Oracle lo farà in modo implicito con la query che hai mostrato e utilizzerà comunque l'indice. E lo stesso se stai unendo i tavoli, ma se riempi o rifili durante l'unione dipende da quale tavolo è il driver:
SELECT table1.ID, table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45', 12)
Oppure:
SELECT table1.ID
FROM table2
JOIN table1 ON table1.value = RPAD(table2.value, 12)