복붙노트

[SQL] 널와 SQL 정렬 순서는 마지막 값

SQL

널와 SQL 정렬 순서는 마지막 값

나는 다음과 같은 테스트 코드가 있습니다 :

CREATE TABLE #Foo (Foo int)

INSERT INTO #Foo SELECT 4
INSERT INTO #Foo SELECT NULL
INSERT INTO #Foo SELECT 2
INSERT INTO #Foo SELECT 5
INSERT INTO #Foo SELECT 1

SELECT * FROM #Foo
 ORDER BY
  CASE WHEN Foo IS NULL THEN Foo DESC ELSE Foo END

DROP TABLE #Foo

나는 다음과 같은 출력을 생성하기 위해 노력하고있어 :

1
2
3
4
5
NULL

"널 (null)이 다음을 넣을 경우 마지막"

어떻게 그 2005 SQL을 사용하여 수행됩니다

/미디엄

해결법

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

    1.한 가지 방법은 다음과 같이 그것을 정렬 할 수 있습니다 :

    한 가지 방법은 다음과 같이 그것을 정렬 할 수 있습니다 :

    ORDER BY 
    (CASE WHEN Foo IS NULL THEN 1 ELSE 0 END), Foo
    

    또는 : 널 (null)에 의해, 다음 정렬 푸 내용에 의해 첫 번째 종류.

  2. ==============================

    2.당신은 또한 할 수있다

    당신은 또한 할 수있다

    SELECT * FROM #Foo ORDER BY COALESCE(Foo, 2147483647)
    

    단지 정렬의 목적을 위해 가능한 최대 INT와 NULL를 대체하는 (그래서 혼자 retured 값을 떠나는) 등 순서의 뒷면에 션트.

  3. from https://stackoverflow.com/questions/2498240/sql-sort-order-with-null-values-last by cc-by-sa and MIT license