if()

if() 함수는 조건 표현식을 평가하여 참이면 첫 번째 값을, 거짓이면 두 번째 값을 반환합니다. 3항 연산자(ternary operator)와 동일한 방식으로 동작합니다.

문법

if(CONDITION, EXPR_IF_TRUE, EXPR_IF_FALSE)

매개변수

CONDITION
평가할 조건 표현식입니다. null, 불리언 false, 숫자 0이나 NaN, 빈 문자열, 빈 목록·배열이나 맵은 거짓으로 판정하고, 그 외의 값은 참으로 판정합니다.
EXPR_IF_TRUE
조건이 참으로 판정될 때 반환할 값 표현식입니다.
EXPR_IF_FALSE
조건이 거짓으로 판정될 때 반환할 값 표현식입니다.

설명

if() 함수는 CONDITION을 평가하여 참·거짓을 판정합니다. null, 불리언 false, 숫자 0이나 NaN, 빈 문자열, 빈 목록·배열이나 맵은 거짓으로 판정되어 EXPR_IF_FALSE를 반환하고, 그 외의 값은 참으로 판정되어 EXPR_IF_TRUE를 반환합니다.

반환 타입은 EXPR_IF_TRUE와 EXPR_IF_FALSE의 타입에 따라 결정됩니다. 두 표현식의 타입이 서로 다르면 자동으로 상위 타입으로 승격됩니다(예: 정수와 실수가 혼합되면 실수로 반환).

오류 코드

해당 사항 없음

사용 예

이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.

  1. HTTP 상태 코드가 400 이상이면 오류로 분류

    table limit=5 WEB_APACHE_SAMPLE | eval result = if(status >= 400, "error", "ok") | fields status, result
    
  2. 응답 크기가 1000바이트를 초과하는지 여부에 따라 분기

    table limit=5 WEB_APACHE_SAMPLE | eval label = if(bytes > 1000, "large", "small") | fields bytes, label
    
  3. 조건이 거짓인 경우 — 두 번째 표현식 반환

    table limit=5 WEB_APACHE_SAMPLE | eval result = if(method == "GET", "읽기", "쓰기") | fields method, result
    
  4. NULL 입력 — 조건이 null이면 거짓으로 처리

    json "{'val': null}" | eval result = if(val, "존재", "없음")
    | # result: 없음
    
  5. 숫자 0을 조건으로 사용 — 거짓으로 판정(4.0.2609.0부터 적용된 동작)

    json "{'val': 0}" | eval result = if(val, "참", "거짓")
    | # result: 거짓
    

    4.0.2609.0 이전에는 조건이 불리언이 아니면서 null도 아닌 값이면 항상 참으로 판정되어 이 예의 결과가 "참"이었습니다. 이제는 숫자 0이 거짓으로 판정되어 결과가 "거짓"으로 바뀝니다.

변경 이력

대상도입 릴리스
if() 함수소나 4.0 이전 버전
조건 판정 기준 통일 — 숫자 0·빈 문자열 등을 거짓으로 판정4.0.2609.0