Oracle order by 자구 의 NULL 정렬

2772 단어 OracleorderNULL
Oracle SQL 구문 에서 orderby 는 검색 결과 집합 을 정렬 하 는 데 사용 되 는 것 을 잘 알 고 있 습 니 다. Oracle 에서 NULL 값 은 매우 특수 한 값 입 니 다. orderby 가 지정 한 열 에 NULL 값 이 있다 면 정렬 결 과 는 어 떨 까요?
다음은 Order by 시 Oracle 이 NULL 을 어떻게 처리 하 는 지 실험 을 해 보 겠 습 니 다.
주요 기능
1. 테스트 표를 만 들 고 테스트 데 이 터 를 삽입 합 니 다.
zx@ORCL>create table t (id number,name varchar2(10));

Table created.

zx@ORCL>insert into t values(1,'zx');

1 row created.

zx@ORCL>insert into t values(2,'wl');

1 row created.

zx@ORCL>insert into t values(3,'zxt');

1 row created.

zx@ORCL>insert into t values(4,NULL);

1 row created.

zx@ORCL>insert into t values(5,'yhz');

1 row created.

zx@ORCL>insert into t values(6,NULL);

1 row created.

zx@ORCL>commit;

Commit complete.

zx@ORCL>select * from t;

	ID NAME
---------- ------------------------------
	 1 zx
	 2 wl
	 3 zxt
	 4
	 5 yhz
	 6

6 rows selected.

2 、 테스트 order by
zx@ORCL>select * from t order by name asc;

	ID NAME
---------- ------------------------------
	 2 wl
	 5 yhz
	 1 zx
	 3 zxt
	 6
	 4

6 rows selected.

zx@ORCL>select * from t order by name desc;

	ID NAME
---------- ------------------------------
	 4
	 6
	 3 zxt
	 1 zx
	 5 yhz
	 2 wl

6 rows selected.

정렬 방식 에 따라 NULL 값 이 정렬 하 는 위치 가 다 릅 니 다.오름차 순 (asc) NULL 이 맨 뒤에 있 고, 내림차 순 (desc) NULL 이 맨 앞 에 있 습 니 다.
공식 문서 가 어떻게 묘사 되 었 는 지 다시 한 번 봅 시다.
ASC | DESC Specify the ordering sequence (ascending or descending).  ASC  is the default.
NULLS FIRST | NULLS LAST Specify whether returned rows containing nulls should appear first or last in the ordering sequence. NULLS   LAST  is the default for ascending order, and  NULLS   FIRST  is the default for descending order.
우리 의 실험 결 과 는 공식 문서 설명 과 일치 하 는 것 을 볼 수 있다.또한 NULLS FIRST | NULLS LAST 를 사용 하여 NULL 의 값 이 맨 앞 에 있 는 지 맨 뒤에 있 는 지 결정 할 수 있 습 니 다.
3. 다시 실험 검증
zx@ORCL>select * from t order by name asc nulls first;

	ID NAME
---------- ------------------------------
	 6
	 4
	 2 wl
	 5 yhz
	 1 zx
	 3 zxt

6 rows selected.

zx@ORCL>select * from t order by name asc nulls last;

	ID NAME
---------- ------------------------------
	 2 wl
	 5 yhz
	 1 zx
	 3 zxt
	 6
	 4

6 rows selected.

zx@ORCL>select * from t order by name desc nulls first;

	ID NAME
---------- ------------------------------
	 4
	 6
	 3 zxt
	 1 zx
	 5 yhz
	 2 wl

6 rows selected.

zx@ORCL>select * from t order by name desc nulls last;

	ID NAME
---------- ------------------------------
	 3 zxt
	 1 zx
	 5 yhz
	 2 wl
	 6
	 4

6 rows selected.

결 과 를 보면 NULLS FIRST | NULLS LAST 를 사용 하면 정렬 결과 의 첫 부분 인지 끝 부분 인지 NULL 값 을 직접 제어 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기