I have this query, using Postgres:
x
select *
from jobs
where short_name like '%GES.PAY%'
order by short_name;
which returns this result :
CRD.GES.PAY
GES.PAY
REL.GES.PAY
But how to have ‘GES.PAY’ the first line of the result , like that :
GES.PAY
CRD.GES.PAY
REL.GES.PAY
In other words I would like the exact name in first line, then the other cases. Is it possible to do that in one simple query, without using Levenshtein functions?
Advertisement
Answer
You can do conditional ordering:
order by
case when short_name = 'GES.PAY' then 0 else 1 end,
short_name
In Postgres you can also express this as:
order by (short_name = 'GES.PAY')::int desc, short_name
Th latter works because (condition)::int
returns 1
if the condition is fulfilled, else 0
.