본문 바로가기
MySql

MySQL FIELD () 함수와 유사한 MS SQL Server 기능은 무엇입니까?

by 베이스 공부 2020. 11. 4.
반응형


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

'd'가 첫 번째 다음 네 번째 인수이기 때문에 4를 반환합니다.

이 기능은 매우 특정한 순서에 따라 쿼리 결과를 정렬하는 기능을 제공합니다. 현재 신청의 경우 관리해야하는 4 가지 상태 (활성, 승인, 거부 및 제출)가 있습니다. 하지만 상태 란으로 간단히 주문하면 제출 및 승인 된 항목보다 거부 및 활성 상태 항목이 더 중요하기 때문에 결과 목록의 유용성이 떨어집니다.

MySQL에서는 다음과 같이 할 수 있습니다.

SELECT <stuff> FROM <table> WHERE <conditions> ORDER BY FIELD(status, 'rejected', 'active','submitted', 'approved')

결과는 거부 된 항목이 먼저, 활성 항목이 순서대로 정렬됩니다. 따라서 결과는 방문자의 중요성 수준을 낮추는 순서로 정렬되었습니다.

상태에 대한이 중요도 수준을 열거하는 별도의 테이블을 만든 다음 내림차순으로 쿼리를 정렬 할 수 있지만 MS SQL Server로 전환 한 후 몇 번이나 나타났기 때문에 다음 사항에 대해 문의 할 것이라고 생각했습니다. MySQL의 FIELD ()와 유사한 내장 함수를 사용하여 추가 테이블과 다소 복잡한 쿼리를 피할 수 있는지 여부.

감사합니다.
데이비드 키스

 

해결 방법

 


ORDER BY CASE status
           WHEN 'active' THEN 1
           WHEN 'approved' THEN 2
           WHEN 'rejected' THEN 3
           WHEN 'submitted' THEN 4
           ELSE 5
         END

보다 복잡한 평가 (조합 포함 또는 LIKE를 사용해야하는 경우)에이 구문을 사용할 수 있습니다.

ORDER BY CASE 
           WHEN status LIKE 'active' THEN 1
           WHEN status LIKE 'approved' THEN 2
           WHEN status LIKE 'rejected' THEN 3
           WHEN status LIKE 'submitted' THEN 4
           ELSE 5
         END

 

참조 페이지 https://stackoverflow.com/questions/3892406

 

 

반응형

댓글