Какие возможности MS SQL Server аналогичны функции MySQL FIELD ()?

MySQL предоставляет строковую функцию с именем FIELD () , которая принимает переменное количество аргументов. Возвращаемое значение - это расположение первого аргумента в списке оставшихся. Другими словами:

FIELD('d', 'a', 'b', 'c', 'd', 'e', 'f')

вернет 4, поскольку «d» является четвертым аргументом, следующим за первым.

Эта функция обеспечивает возможность сортировки результатов запроса на основе очень определенного порядка. У моей текущей заявки есть четыре статуса, которыми я должен управлять: активный, одобренный, отклоненный и отправленный. Однако, если я просто заказываю по столбцу статуса, я чувствую, что удобство использования результирующего списка снижается, поскольку отклоненные и активные элементы статуса более важны, чем отправленные и одобренные.

В MySQL я мог бы сделать это:

SELECT  FROM  WHERE  ORDER BY FIELD(status, 'rejected', 'active','submitted', 'approved')

и результаты будут упорядочены таким образом, чтобы первыми были отклоненные позиции, за ними следуют активные и так далее. Таким образом, результаты были упорядочены в порядке убывания уровней важности для посетителя.

Я мог бы создать отдельную таблицу, которая перечисляет этот уровень важности для статусов, а затем упорядочивать запросы по этому в порядке убывания, но это пришло мне на ум несколько раз после перехода на MS SQL Server, поэтому я подумал, что поинтересуюсь, могу ли я избежать дополнительной таблицы и несколько более сложных запросов, используя встроенную функцию, аналогичную MySQL FIELD ().

Благодарю ты,
Дэвид Кис

14
задан OMG Ponies 8 October 2010 в 16:25
поделиться