Som table1.value
kolonne er indekseret, ønsker du ikke at manipulere det til sammenligningen, da det ville forhindre indekset i at blive brugt. Så du bliver nødt til at ændre den værdi, du slår op:
SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)
Oracle vil dog gøre det implicit med den forespørgsel, du viste, og vil stadig bruge indekset. Og det samme, hvis du slutter dig til bordene, men om du puder eller trimmer under sammenføjningen afhænger af, hvilket bord der er driveren:
SELECT table1.ID, table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45', 12)
Eller:
SELECT table1.ID
FROM table2
JOIN table1 ON table1.value = RPAD(table2.value, 12)