यदि आपकी सभी शर्तों को आरोही क्रम में क्रमबद्ध किया जाए तो जीवन आसान हो जाएगा।
मुझे लगता है कि आपका वास्तविक एप्लिकेशन हार्ड-कोडेड स्ट्रिंग के बजाय एक चर का उपयोग कर रहा है। तो समाधान कुछ इस तरह दिखना चाहिए:
select city, postcode, name
from dealers
where name = p_search_term OR
postcode = p_search_term OR
city = p_search_term
ORDER BY case when postcode = p_search_term then p_search_term else 1 end desc
, case when name = p_search_term then p_search_term else city end asc