본문 바로가기

기타

[sqld] null 이란? (연산, 정렬, 함수)

null 

* 정의

0이나 공백('')이 아닌 부재 또는 모르는 값

 

* 산술연산

null +1

null -3

null * null

=> null

 

* 비교연산

null = null

null = 2

~> 알 수 없음 (unknown)

where 조건절(null 비교연산 포함되어 unknown)

=> false

gpt답변

=> null을 비교하려면 is null 또는 is not null 사용해야함

 

* 정렬

oracle : 가장 큰 값으로 인식

sql server : 가장 작은 값으로 인식

https://uujjjjjnn.tistory.com/76

 

[sqld] 컬럼에 null이 있는데 order by desc 정렬한 경우 (oracle vs sql server)

학원다니면서 실습 할 때는 잘 몰랐는데, null 이 녀석 보통 헷갈리는 녀석이 아님 col ----- 3 1 null 1 인 경우에 order by desc 내림차순 정렬하는 경우에 차이점을 알아보자 oracle sql server null 3 3 2 2 1 1 nu

uujjjjjnn.tistory.com

+ oracle의 경우 order by desc했는데 null값을 맨 뒤로 출력하고 싶다면?

=> order by desc nulls last

+ oracle의 경우 order by asc(생략가능)했는데 null값을 맨 앞으로 출력하고 싶다면?

=> [order by asc] nulls first

 

* 함수

nvl(col1, A) : col1이 null인 경우 A 출력, null이 아닌 경우 col1 출력

isnull(col1,A) : col1이 null인 경우 A 출력, null이 아닌 경우 col1 출력 (nvl과 동일)

nvl2(col1, A, B) : col1이 null이 아니면 A, null이면 B 출력

nullif(col1, A) : col1과 A가 같으면 null, 같지 않으면 col1 출력

coalesce(col1, col2, A) : col1, col2가 null이면 A 출력 (null이 아닌 첫 번째 값 출력)

 

* 집계함수

count(*) : null 포함해서 갯수 출력

avg(), sum() : null 제외해서 집계

A B C
null null 1
3 2 2
null 2 3

count(A) = 1 / sum(A) = 3

count(B) = 2 / sum(B) = 4

count(C) = 3 / sum(C) = 6

=> *이 아닌 경우에 null 제외해서 count 집계

 

sum(A) + sum(B) + sum(C) = 13

sum(A+B+C) = 7