Każde wyrażenie jest oceniane jako wartość logiczna i traktowane jako 0 dla fałszu i 1 dla prawdy i odpowiednio posortowane. Mimo że to działa, trudno jest przestrzegać logiki (a tym samym utrzymać). To, czego używam, to funkcja, która znajduje indeks wartości w tablicy.
ORDER BY idx(array['Nails','Bolts','Washers','Screws','Staples','Nuts'], s.type)
Jest to o wiele łatwiejsze do naśladowania. Gwoździe będą sortowane jako pierwsze, a orzechy jako ostatnie. Możesz zobaczyć, jak utworzyć funkcję idx w repozytorium fragmentów kodu Postgres.http://wiki.postgresql.org/wiki/Array_Index