Oracle의 NULLS FIRST에 해당하는 SQL Server?
Oracle에는 NULLS FIRST가 있으며, 이를 사용하여 NULL 값을 맨 위에 정렬하고 열 값을 내림차순으로 정렬할 수 있습니다.
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
다른것은?
몇 가지 속임수를 쓸 수 있습니다.
ORDER BY (CASE WHEN [Order] IS NULL THEN 0 ELSE 1 END), [Order]
빠른 답변은 다음과 같습니다. 필요한 경우 null 순서를 변경하는 가장 좋은 솔루션은 허용된 솔루션입니다.그러나 필요한 경우에만 사용하거나 변형하여 사용하면 됩니다.
설명 + NULL 먼저:
ORDER BY (CASE WHEN [Order] IS NULL THEN 0 ELSE 1 END), [Order] DESC
ASC + NULL 마지막:
ORDER BY (CASE WHEN [Order] IS NULL THEN 1 ELSE 0 END), [Order] ASC
ASC + NULLS FIRST: 기본적으로 정상적으로 작동합니다.
DESC + NULLS LAST: 기본적으로 정상적으로 작동합니다.
이유를 알아보겠습니다.
ORDER BY Clause(Transact-SQL) MSDN 문서를 확인한 후 아래로 스크롤합니다.ASC | DESC
다음을 읽을 수 있습니다.
ASC | DESC
지정된 열의 값을 오름차순 또는 내림차순으로 정렬하도록 지정합니다.ASC는 가장 낮은 값에서 가장 높은 값으로 정렬합니다.DESC는 가장 높은 값에서 가장 낮은 값으로 정렬합니다.ASC는 기본 정렬 순서입니다.Null 값은 가능한 가장 낮은 값으로 처리됩니다.
따라서 기본적으로 다음과 같이 지정할 경우ASC
순서, 다음과 같이 작동합니다.NULLS FIRST
지정한 경우DESC
처럼 작동합니다.NULLS LAST
.
따라서 다음에 대한 동작만 변경하면 됩니다.NULLS FIRST
에DESC
주문, 그리고NULLS LAST
에ASC
주문.
IMHO, 필요한 경우 null 순서를 변경하는 가장 좋은 해결책은 허용된 방법이지만, 저는 답변의 처음에 다른 경우에 적용된 방법을 포함했습니다.
사용 사례/시점 문장, 예:
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
테이블에 날짜가 지금보다 작은 행이 있고 날짜가 지금보다 큰 다른 행이 있는 경우 NULL이 목록 중앙에 나타납니다.대신 목록 중간에 정렬되지 않는 값을 사용해야 합니다.
IsNull(Date_Sent, '17530101')별 주문 설명
참고: 그 날짜는 사실 1753년 1월 1일입니다.
간단한 예:
SELECT (CASE WHEN Value1 IS NULL THEN 1 ELSE 0 END) AS ValueIsNull, Value1, Value2, Value3
FROM TableName
ORDER BY ValueIsNull DESC, Value1
ORDER BY
COALESCE(POSTING_DATE,'1900-01-01 00:00:00.000')
,OTHER_FIELDS
이 방법은 정렬 순서에서 null이 나타나는 방법을 조정하려는 경우에도 사용할 수 있습니다.열을 비활성화하고 정렬 순서를 반대로 합니다.유감스럽게도 dateTime 열을 캐스트해야 합니다.
ORDER BY -CAST(date_sent as int) ASC
제가 알기로는, 당신은 이것을 통제할 수 없습니다.그리고 당신은 올바른 접근법을 가지고 있는 것처럼 보입니다.ISNULL
.
끈으로, 저는 사용했습니다.ISNULL(field, '')
같은 목적으로
언급URL : https://stackoverflow.com/questions/1456653/sql-server-equivalent-to-oracles-nulls-first
'source' 카테고리의 다른 글
Mongoose - 실행 기능은 무엇을 합니까? (0) | 2023.08.09 |
---|---|
아래쪽 점이 있는 Android ViewPager (0) | 2023.08.09 |
결과 열의 다른 값을 다른 열 sql의 값별로 단일 행으로 가져오는 방법 (0) | 2023.08.04 |
"Provider com.fasterxml.jackson.module.jaxb.Spring Boot 업그레이드 후 "Jaxb Annotation Module을 찾을 수 없음" (0) | 2023.08.04 |
오류: 유형이 Promise 호환 생성자를 참조하지 않으므로 ES5/ES3에서 올바른 비동기 함수 반환 유형이 아닙니다. (0) | 2023.08.04 |