Každý výraz je vyhodnocen jako bool a je s ním zacházeno jako s 0 pro nepravdu a 1 pro pravdivé a vhodně seřazené. I když to funguje, logika se těžko sleduje (a tedy udržuje). Používám funkci, která najde index hodnoty v poli.
ORDER BY idx(array['Nails','Bolts','Washers','Screws','Staples','Nuts'], s.type)
To je mnohem jednodušší dodržet. Nehty se budou třídit jako první a ořechy jako poslední. Můžete se podívat, jak vytvořit funkci idx v úložišti úryvků Postgres.http://wiki.postgresql.org/wiki/Array_Index