Het leven zou gemakkelijker zijn als al uw termen in oplopende volgorde waren gesorteerd.
Ik neem aan dat uw daadwerkelijke toepassing een variabele gebruikt in plaats van een hardgecodeerde tekenreeks. Dus de oplossing zou er ongeveer zo uit moeten zien:
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