본문 바로가기

[Google]/[BQ] BigQuery

[BigQeury] IFNULL vs. NULLIF

728x90
반응형

산술 및 문자열 연산자

NULL에 대한 산술/문자열 연산자 결과
  • A + NULL 반환 값: NULL
  • A - NULL 반환 값: NULL
  • A / NULL 반환 값: NULL
  • A * NULL 반환 값: NULL
  • NULL / A 반환 값: NULL
  • 0 / NULL 반환 값: NULL
  • 0 * NULL 반환 값: NULL
  • A & NULL 반환 값: A

NULL 전파

NULL 전파를 피하기 위한 조건문

IF

IF(expr, true_result, else_result)

설명

expr은 Bool 표현식이어야 한다.

expr 조건 결과(True/False)에 따라 반환값을 정할 수 있는 조건문이다.

expr이 True인 경우 true_result 값이, False 또는 NULL인 경우 else_result 값이 반환된다.

 

예시

WITH Numbers AS (
  SELECT 10 as A, 20 as B UNION ALL
  SELECT 50, 30 UNION ALL
  SELECT 60, 60
)
SELECT
  A,
  B,
  IF(A < B, 'true', 'false') AS result
FROM Numbers

/*------------------*
 | A  | B  | result |
 +------------------+
 | 10 | 20 | true   |
 | 50 | 30 | false  |
 | 60 | 60 | false  |
 *------------------*/
  • "string이 NULL이 아닌 조건"
IF(column IS NOT NULL AND column != '', 'true', 'false')
-- 같은 표현식
IF(column > '', 'true', 'false')

IFNULL

IFNULL(expr, null_result)

설명

expr이 NULL인 경우 null_result를 반환한다.

그 외의 경우 expr을 반환한다.

 

예시

SELECT IFNULL(NULL, 0) AS result
-- result 값: 0

SELECT IFNULL(10, 0) AS result
-- result 값: 10

NULLIF

NULLIF(expr, expr_to_match)

설명

expr과 expr_to_match는 비교 가능해야 한다. (데이터 타입)

expr = expr_to_match 가 True인 경우 NULL을 반환한다.

그 외의 경우 expr을 반환한다.

 

예시

SELECT NULLIF(0, 0) AS result
-- result 값 : NULL

SELECT NULLIF(10, 0) AS result
-- result 값 : 10

Reference

 

반응형

'[Google] > [BQ] BigQuery' 카테고리의 다른 글

[BQ] BigQuery partition limit  (0) 2023.07.05
[BQ] 쿼리 비용 Tip  (0) 2023.06.21
[BQ] Python에서 BigQuery 실행하기  (0) 2023.04.23
[Google] BigQuery에 대하여  (0) 2023.04.15
[BigQuery] NET.HOST()  (0) 2023.04.15