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)