Jako table1.value
je indexován, nechcete s tím manipulovat pro porovnání, protože by to zabránilo použití indexu. Takže budete muset upravit hodnotu, kterou hledáte:
SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)
Oracle to udělá implicitně s dotazem, který jste ukázali, a bude stále používat index. A to samé, pokud se připojujete ke stolům, ale to, zda během spojení podložíte nebo oříznete, závisí na tom, který stůl je řidičem:
SELECT table1.ID, table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45', 12)
Nebo:
SELECT table1.ID
FROM table2
JOIN table1 ON table1.value = RPAD(table2.value, 12)