Всеки израз се оценява като bool и се третира като 0 за false и 1 за true и се сортира по подходящ начин. Въпреки че това работи, логиката е трудна за следване (и по този начин за поддържане). Това, което използвам, е функция, която намира индекса на стойност в масив.
ORDER BY idx(array['Nails','Bolts','Washers','Screws','Staples','Nuts'], s.type)
Това е много по-лесно за следване. Ноктите ще бъдат сортирани първи, а ядките - последни. Можете да видите как да създадете функцията idx в хранилището с фрагменти на Postgres.http://wiki.postgresql.org/wiki/Array_Index