各式はブール値として評価され、falseの場合は0、trueの場合は1として扱われ、適切にソートされます。これは機能しますが、ロジックを追跡する(したがって維持する)のは困難です。私が使用しているのは、配列内の値のインデックスを見つける関数です。
ORDER BY idx(array['Nails','Bolts','Washers','Screws','Staples','Nuts'], s.type)
これは、従うのがはるかに簡単です。ネイルは最初にソートされ、ナッツは最後にソートされます。 idx関数の作成方法はPostgresスニペットリポジトリで確認できます。http://wiki.postgresql.org/wiki/Array_Index