복붙노트

[SQL] SQL 서버 오라클의 NULLS FIRST에 해당?

SQL

SQL 서버 오라클의 NULLS FIRST에 해당?

오라클은 내가 널 값을 가질 수 있습니다 NULLS FIRST를 가지고 그래서 내림차순 내 열 값 다음에 상단 분류 :

ORDER BY date_sent NULLS FIRST

어떻게 SQL Server의 비교입니까? 이러한 대안은 NULL 또는 날짜 값을 가정하고있다 과거 :

ORDER BY ISNULL(date_sent, GETDATE()) DESC
ORDER BY (CASE WHEN t.setinactive IS NULL THEN 1 ELSE 2 END), t.setinactive DESC
ORDER BY -CAST(date_sent as int) ASC

어떤 사람?

해결법

  1. ==============================

    1.당신은 몇 가지 트릭을 할 수 있습니다 :

    당신은 몇 가지 트릭을 할 수 있습니다 :

    ORDER BY (CASE WHEN [Order] IS NULL THEN 0 ELSE 1 END), [Order] 
    
  2. ==============================

    2.빠른 대답은 이것이다 : 필요한 경우에 널 (null)의 순서를 변경하기위한 가장 좋은 방법은 허용 하나입니다. 하지만 당신은 단지 그것을, 또는 필요한 경우에 그것의 변화를 사용해야합니다 :

    빠른 대답은 이것이다 : 필요한 경우에 널 (null)의 순서를 변경하기위한 가장 좋은 방법은 허용 하나입니다. 하지만 당신은 단지 그것을, 또는 필요한 경우에 그것의 변화를 사용해야합니다 :

    의 이유를 보자 :

    당신이 절 (Transact-SQL)를 참조하십시오 MSDN의 문서에 의해 순서를 확인하고, ASC 아래로 스크롤하면 | DESC, 당신이 읽을 수 :

    당신이 ASC 순서를 지정한다면, 기본적으로는 NULLS FIRST처럼 작동합니다. 당신이 DESC를 지정한다면, 그것은 NULLS LAST처럼 작동합니다.

    당신은 단지 ASC 순서 및 NULLS LAST를 들어, DESC 순서로 NULLS FIRST에 대한 변화에게 행동을 할 필요가 그래서.

    IMHO, 필요한 경우에 널 (null)의 순서를 변경하기위한 가장 좋은 방법은 허용 하나,하지만 난 그게 내 대답의 시작 부분에 서로 다른 경우에 적응 포함 시켰습니다.

  3. ==============================

    3.사용 사례 / 때 문에, 예를 들어 :

    사용 사례 / 때 문에, 예를 들어 :

    ORDER BY (case WHEN ColINT IS NULL THEN {maxIntValue} ELSE ColINT END) DESC
    
    ORDER BY (case WHEN ColVChar IS NULL THEN {maxVCharValue} ELSE ColVChar END) DESC
    
    ORDER BY (case WHEN ColDateT IS NULL THEN {maxDateTValue} ELSE ColDateT END) DESC
    

    ...등등.

    또는 더 나은 당신은 당신의 열 유형과 최대 값이 무엇인지 상관하지 않는.

    ORDER BY (case WHEN ColAnyType IS NULL THEN 1 ELSE 0 END) DESC, ColAnyType DESC
    
  4. ==============================

    4.당신이 지금보다 날짜보다 적은 지금보다 날짜와 테이블의 행과 다른 행이 있으면 NULLS 목록의 중간에 나타납니다. 대신, 당신은 아마 결코 종류 목록의 중간에하는 값을 사용해야합니다.

    당신이 지금보다 날짜보다 적은 지금보다 날짜와 테이블의 행과 다른 행이 있으면 NULLS 목록의 중간에 나타납니다. 대신, 당신은 아마 결코 종류 목록의 중간에하는 값을 사용해야합니다.

    ISNULL에 의해 주문 (Date_Sent, '17530101') 내림차순

    참고 : 그 일이 실제로 1753년 1월 1일입니다.

  5. ==============================

    5.간단한 예 :

    간단한 예 :

    SELECT (CASE WHEN Value1 IS NULL THEN 1 ELSE 0 END) AS ValueIsNull, Value1, Value2, Value3
    FROM TableName
    ORDER BY ValueIsNull DESC, Value1 
    
  6. ==============================

    6.

    ORDER BY
      COALESCE(POSTING_DATE,'1900-01-01 00:00:00.000')
     ,OTHER_FIELDS
    
  7. ==============================

    7.이것은 당신이 널 (null)이 정렬 순서에 표시되는 방식을 조정하려면 다른 방법입니다. 열을 무효로하고 정렬 순서를 반대로. 불행하게도 당신은 dateTime에 열을 캐스팅해야합니다.

    이것은 당신이 널 (null)이 정렬 순서에 표시되는 방식을 조정하려면 다른 방법입니다. 열을 무효로하고 정렬 순서를 반대로. 불행하게도 당신은 dateTime에 열을 캐스팅해야합니다.

    ORDER BY -CAST(date_sent as int) ASC
    
  8. ==============================

    8.당신은 내 지식이를 제어 할 수 없습니다. 당신이 ISNULL과 올바른 접근 방식을 가지고있는 것처럼 그리고 그것은 보인다.

    당신은 내 지식이를 제어 할 수 없습니다. 당신이 ISNULL과 올바른 접근 방식을 가지고있는 것처럼 그리고 그것은 보인다.

    문자열로, 나는 같은 목적을 위해 ISNULL (필드, '') 사용했습니다.

  9. from https://stackoverflow.com/questions/1456653/sql-server-equivalent-to-oracles-nulls-first by cc-by-sa and MIT license