Hidup akan lebih mudah jika semua istilah Anda diurutkan dalam urutan menaik.
Saya berasumsi bahwa aplikasi Anda yang sebenarnya menggunakan variabel daripada string kode keras. Jadi solusinya akan terlihat seperti ini:
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