Setiap ekspresi dievaluasi sebagai bool dan diperlakukan sebagai 0 untuk salah dan 1 untuk benar dan diurutkan dengan tepat. Meskipun ini berhasil, logikanya sulit untuk diikuti (dan karenanya dipertahankan). Yang saya gunakan adalah fungsi yang menemukan indeks nilai dalam array.
ORDER BY idx(array['Nails','Bolts','Washers','Screws','Staples','Nuts'], s.type)
Ini jauh lebih mudah untuk diikuti. Kuku akan disortir terlebih dahulu dan kacang disortir terakhir. Anda dapat melihat cara membuat fungsi idx di repositori snippet Postgres.http://wiki.postgresql.org/wiki/Array_Index