table1.value
. के रूप में कॉलम अनुक्रमित है, तो आप तुलना के लिए उसमें हेरफेर नहीं करना चाहते हैं क्योंकि इससे इंडेक्स का उपयोग होने से रोका जा सकेगा। इसलिए आपको अपने द्वारा खोजे जा रहे मान को संशोधित करना होगा:
SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)
ओरेकल उस क्वेरी के साथ पूरी तरह से करेगा जो आपने दिखाया था, और अभी भी इंडेक्स का उपयोग करेगा। और वही यदि आप तालिकाओं में शामिल हो रहे हैं, लेकिन शामिल होने के दौरान आप पैड या ट्रिम करते हैं या नहीं, यह इस बात पर निर्भर करता है कि कौन सी तालिका ड्राइवर है:
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)