본문으로 바로가기
본문으로 바로가기

비교 함수

비교 규칙

아래 비교 FUNCTION들은 UInt8 타입의 0 또는 1을 반환합니다. 동일한 그룹 내의 값들만 비교할 수 있습니다(예: UInt16UInt64). 서로 다른 그룹의 값들(예: UInt16DateTime)은 비교할 수 없습니다. 숫자와 문자열 간의 비교, 문자열과 날짜 간의 비교, 날짜와 시간 간의 비교가 가능합니다. 튜플과 배열의 경우, 비교는 사전식(lexicographic)으로 이루어지며, 왼쪽과 오른쪽 튜플/배열의 각 대응하는 요소를 순서대로 비교합니다.

비교 가능한 타입은 다음과 같습니다.

  • 숫자와 데시멀(decimal)
  • 문자열과 고정 길이 문자열
  • 날짜
  • 날짜와 시간
  • 튜플(사전식 비교)
  • 배열(사전식 비교)
참고

문자열은 바이트 단위로 비교합니다. 문자열 중 하나에 UTF-8로 인코딩된 멀티바이트 문자가 포함된 경우 예기치 않은 결과가 발생할 수 있습니다. 문자열 S2를 접두사로 가지는 문자열 S1은 S2보다 더 긴 문자열로 간주됩니다.

equals

도입: v1.1.0

두 값을 비교하여 같은지 평가합니다.

구문

equals(a, b)
        -- a = b
        -- a == b

인수

  • a — 첫 번째 값.* - b — 두 번째 값.*

반환 값

ab와 같으면 1, 그렇지 않으면 0을 반환합니다. UInt8

예제

사용 예제

SELECT 1 = 1, 1 = 2;
┌─equals(1, 1)─┬─equals(1, 2)─┐
│            1 │            0 │
└──────────────┴──────────────┘

globalIn

도입된 버전: v1.1.0

in과 동일하지만, 분산 쿼리에서 글로벌 Set 분산 방식을 사용합니다. 이 Set은 모든 원격 서버로 전송됩니다.

구문

globalIn(x, set)

인수(Arguments)

  • x — 검사할 값입니다.
  • set — 값들의 Set입니다.

반환 값(Returned value)

x가 Set에 포함되어 있으면 1, 그렇지 않으면 0을 반환합니다. UInt8

예시(Examples)

기본 사용법(Basic usage)

SELECT 1 IN (1, 2, 3)
1

globalInIgnoreSet

도입: v1.1.0

in과 동일하지만, 분산 쿼리에서 전역 Set 분산(global set distribution)을 사용합니다. 이때 Set은 모든 원격 서버로 전송됩니다. 이 함수는 Set을 생성하지 않고 타입 분석에만 사용하는 IgnoreSet의 변형입니다.

구문

globalIn(x, set)

인수

  • x — 확인할 값입니다. - set — 값의 집합입니다.

반환 값

x가 집합에 포함되면 1을, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT 1 IN (1, 2, 3)
1

globalNotIn

도입 버전: v1.1.0

notIn과 같지만, 분산 쿼리에서 전역 Set 분산 방식을 사용합니다. 이 Set은 모든 원격 서버로 전송됩니다.

구문

globalNotIn(x, set)

인수

  • x — 검사할 값입니다. - set — 값들의 Set입니다.

반환 값

x가 Set에 없으면 1을, 그렇지 않으면 0을 반환합니다. UInt8

예제

기본 사용 예

SELECT 4 NOT IN (1, 2, 3)
1

globalNotInIgnoreSet

도입 버전: v1.1.0

notIn과 동일하지만, 분산 쿼리에서 글로벌 Set 분산 방식을 사용합니다. Set은 모든 원격 서버로 전송됩니다. 이는 Set을 생성하지 않고 데이터 타입 분석을 위해 사용되는 IgnoreSet의 변형입니다.

구문

globalNotIn(x, set)

인자

  • x — 확인할 값입니다. - set — 값들의 집합(Set)입니다.

반환 값

x가 Set에 속하지 않으면 1, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT 4 NOT IN (1, 2, 3)
1

globalNotNullIn

도입 버전: v1.1.0

notNullIn과 동일하지만, 분산 쿼리에서 전역 Set 분산 방식을 사용합니다. Set은 모든 원격 서버에 전송됩니다.

구문

globalNotNullIn(x, set)

인수

  • x — 확인할 값입니다. - set — 값들의 Set입니다.

반환 값

x가 Set에 포함되어 있지 않으면 1을, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT notNullIn(NULL, tuple(1, NULL))
0

globalNotNullInIgnoreSet

도입 버전: v1.1.0

notNullIn과 동일하지만, 분산 쿼리에서 global set 분산 방식을 사용합니다. Set은 모든 원격 서버로 전송됩니다. 이 함수는 Set을 실제로 생성하지 않고 형식 분석(타입 분석)에 사용하는 IgnoreSet 변형입니다.

구문

globalNotNullIn(x, set)

인수

  • x — 검사할 값입니다. - set — 값들의 집합입니다.

반환 값

x가 집합에 포함되지 않으면 1을, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT notNullIn(NULL, tuple(1, NULL))
0

globalNullIn

도입된 버전: v1.1.0

nullIn과 동일하지만, 분산 쿼리에서 전역 Set 분배 방식을 사용합니다. Set은 모든 원격 서버로 전송됩니다.

구문

globalNullIn(x, set)

인수

  • x — 검사할 값.
  • set — 값으로 구성된 Set(집합).

반환 값

x가 Set에 포함되어 있으면 1을, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT nullIn(NULL, tuple(1, NULL))
1

globalNullInIgnoreSet

도입 버전: v1.1.0

nullIn과 동일하지만, 분산 쿼리에서 전역 Set 분산을 사용합니다. Set은 모든 원격 서버로 전송됩니다. 이 IgnoreSet 변형은 Set을 생성하지 않고 타입 분석에 사용됩니다.

구문

globalNullIn(x, set)

인수

  • x — 확인할 값입니다.
  • set — 값들의 집합입니다.

반환값

x가 집합에 포함되어 있으면 1, 그렇지 않으면 0을 반환합니다. UInt8

예제

기본 사용법

SELECT nullIn(NULL, tuple(1, NULL))
1

greater

도입된 버전: v1.1.0

두 값을 비교하여 앞의 값이 뒤의 값보다 큰지 판별합니다.

구문

greater(a, b)
    -- a > b

인수

  • a — 첫 번째 값.* - b — 두 번째 값.*

반환 값

ab보다 크면 1, 그렇지 않으면 0을 반환합니다. 반환 형식은 UInt8입니다.

예제

사용 예제

SELECT 2 > 1, 1 > 2;
┌─greater(2, 1)─┬─greater(1, 2)─┐
│             1 │             0 │
└───────────────┴───────────────┘

greaterOrEquals

도입: v1.1.0

두 값이 크거나 같은지 비교합니다.

구문

greaterOrEquals(a, b)
    -- a >= b

인수

  • a — 첫 번째 값.* - b — 두 번째 값.*

반환 값

ab보다 크거나 같으면 1을, 그렇지 않으면 0을 반환합니다. 반환 타입은 UInt8입니다.

예시

사용 예시

SELECT 2 >= 1, 2 >= 2, 1 >= 2;
┌─greaterOrEquals(2, 1)─┬─greaterOrEquals(2, 2)─┬─greaterOrEquals(1, 2)─┐
│                     1 │                     1 │                     0 │
└───────────────────────┴───────────────────────┴───────────────────────┘

in

도입된 버전: v1.1.0

왼쪽 피연산자가 오른쪽 피연산자인 Set에 포함되어 있는지 확인합니다. 포함되어 있으면 1을, 그렇지 않으면 0을 반환합니다. 왼쪽 피연산자에 있는 NULL 값은 건너뛰며(Set에 포함되지 않은 것으로 간주합니다).

구문

in(x, set)

Arguments

  • x — 검사할 값. - set — 값의 Set.

Returned value

x가 Set에 포함되면 1을, 그렇지 않으면 0을 반환합니다. UInt8

Examples

Basic usage

SELECT 1 IN (1, 2, 3)
1

inIgnoreSet

도입 버전: v1.1.0

왼쪽 피연산자가 오른쪽 피연산자인 Set에 포함되어 있는지 확인합니다. 포함되어 있으면 1을, 그렇지 않으면 0을 반환합니다. 왼쪽 피연산자에서 NULL 값은 건너뛰며(해당 Set에 포함되지 않은 것으로 간주함) 처리합니다. 이 함수는 Set을 생성하지 않고 형식 분석에 사용하는 IgnoreSet 변형입니다.

구문

in(x, set)

인수

  • x — 확인할 값입니다. - set — 값들의 집합입니다.

반환 값

x가 집합에 포함되어 있으면 1을, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT 1 IN (1, 2, 3)
1

isDistinctFrom

도입 버전: v25.11.0

두 값 간 NULL-안전(null-safe) 「같지 않음(not equals)」 비교를 수행합니다. 한 값은 NULL이고 다른 값은 NULL이 아닌 경우를 포함하여, 두 값이 서로 다를(distinct, 같지 않을) 때 true를 반환합니다. 두 값이 같거나 둘 다 NULL이면 false를 반환합니다.

구문

isDistinctFrom(x, y)

인수

  • x — 비교할 첫 번째 값입니다. 어떤 ClickHouse 데이터 타입이든 될 수 있습니다. Any
  • y — 비교할 두 번째 값입니다. 어떤 ClickHouse 데이터 타입이든 될 수 있습니다. Any

반환 값

두 값이 서로 다른 경우 true를 반환하며, NULL을 서로 비교 가능한 값으로 취급합니다:

  • x != y이면 true를 반환합니다.
    • x 또는 y 중 정확히 하나만 NULL이면 true를 반환합니다.
    • x = y이거나 x와 y가 모두 NULL이면 false를 반환합니다. Bool

예시

숫자와 NULL을 사용하는 기본 예제

SELECT
    isDistinctFrom(1, 2) AS result_1,
    isDistinctFrom(1, 1) AS result_2,
    isDistinctFrom(NULL, 1) AS result_3,
    isDistinctFrom(NULL, NULL) AS result_4
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘

isNotDistinctFrom

도입된 버전: v25.10.0

두 값에 대해 NULL에 안전한 「equals」 비교를 수행합니다. 두 값이 동일하면, 둘 다 NULL인 경우를 포함하여 true를 반환합니다. 두 값이 서로 다르거나 둘 중 하나만 NULL이면 false를 반환합니다.

구문

isNotDistinctFrom(x, y)

인수(Arguments)

  • x — 비교할 첫 번째 값입니다. 어떤 ClickHouse 데이터 타입이든 사용할 수 있습니다. Any
  • y — 비교할 두 번째 값입니다. 어떤 ClickHouse 데이터 타입이든 사용할 수 있습니다. Any

반환 값(Returned value)

NULL 값을 비교 가능한 값으로 취급하여 두 값이 같으면 true를 반환합니다.

  • x = y이면 true를 반환합니다.
    • x와 y가 모두 NULL이면 true를 반환합니다.
    • x != y이거나 x와 y 중 정확히 하나만 NULL이면 false를 반환합니다. Bool

예시(Examples)

숫자와 NULL에 대한 기본 사용 예

SELECT
    isNotDistinctFrom(1, 1) AS result_1,
    isNotDistinctFrom(1, 2) AS result_2,
    isNotDistinctFrom(NULL, NULL) AS result_3,
    isNotDistinctFrom(NULL, 1) AS result_4
┌─result_1─┬─result_2─┬─result_3─┬─result_4─┐
│        1 │        0 │        1 │        0 │
└──────────┴──────────┴──────────┴──────────┘

less

도입: v1.1.0

두 값을 비교하여 앞의 값이 뒤의 값보다 작은지(미만 관계인지) 여부를 판단합니다.

구문

less(a, b)
    -- a < b

인수

  • a — 첫 번째 값.* - b — 두 번째 값.*

반환 값

ab보다 작으면 1, 그렇지 않으면 0을 반환합니다. 반환 값의 타입은 UInt8입니다.

예시

사용 예시

SELECT 1 < 2, 2 < 1;
┌─less(1, 2)─┬─less(2, 1)─┐
│          1 │          0 │
└────────────┴────────────┘

lessOrEquals

도입된 버전: v1.1.0

두 값이 작거나 같은지 비교합니다.

구문

lessOrEquals(a, b)
-- a <= b

인수

  • a — 첫 번째 값.* - b — 두 번째 값.*

반환 값

ab보다 작거나 같으면 1, 그렇지 않으면 0을 반환합니다. UInt8

예제

사용 예제

SELECT 1 <= 2, 2 <= 2, 3 <= 2;
┌─lessOrEquals(1, 2)─┬─lessOrEquals(2, 2)─┬─lessOrEquals(3, 2)─┐
│                  1 │                  1 │                  0 │
└────────────────────┴────────────────────┴────────────────────┘

notEquals

도입: v1.1.0

두 값이 서로 다른지 비교합니다.

구문

notEquals(a, b)
    -- a != b
    -- a <> b

인수

  • a — 첫 번째 값.* - b — 두 번째 값.*

반환 값

ab와 같지 않으면 1을, 그렇지 않으면 0을 반환합니다. 반환 타입은 UInt8입니다.

예제

사용 예제

SELECT 1 != 2, 1 != 1;
┌─notEquals(1, 2)─┬─notEquals(1, 1)─┐
│               1 │               0 │
└─────────────────┴─────────────────┘

notIn

도입된 버전: v1.1.0

왼쪽 피연산자가 오른쪽 피연산자 Set의 요소가 아닌지 확인합니다. Set에 포함되지 않으면 1을 반환하고, 포함되어 있으면 0을 반환합니다. 왼쪽 피연산자의 NULL 값은 무시됩니다.

구문

notIn(x, set)

인수

  • x — 확인할 값입니다. - set — 값들의 Set입니다.

반환 값

x가 Set에 포함되지 않으면 1, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT 4 NOT IN (1, 2, 3)
1

notInIgnoreSet

도입 버전: v1.1.0

왼쪽 피연산자가 오른쪽 피연산자인 Set의 요소가 아닌지 확인합니다. Set에 포함되어 있지 않으면 1을, 그렇지 않으면 0을 반환합니다. 왼쪽 피연산자의 NULL 값은 무시됩니다. Set을 생성하지 않고 타입 분석에 사용하는 IgnoreSet 변형입니다.

문법

notIn(x, set)

Arguments

  • x — 검사할 값입니다. - set — 값들의 Set입니다.

Returned value

x가 set에 포함되지 않으면 1을, 그렇지 않으면 0을 반환합니다. UInt8

Examples

기본 사용

SELECT 4 NOT IN (1, 2, 3)
1

notNullIn

도입 버전: v1.1.0

왼쪽 피연산자가 오른쪽 피연산자 Set에 포함되지 않는지 확인합니다. notIn과는 달리 NULL 값이 건너뛰어지지 않습니다. NULL은 Set의 요소들과 비교되며, NULL = NULL 비교는 true로 평가됩니다.

구문

notNullIn(x, set)

인수

  • x — 검사할 값입니다. - set — 값들의 Set입니다.

반환 값

x가 set에 포함되지 않으면 1, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT notNullIn(NULL, tuple(1, NULL))
0

notNullInIgnoreSet

도입 버전: v1.1.0

왼쪽 피연산자가 오른쪽 피연산자 Set의 요소가 아닌지 확인합니다. notIn과는 달리 NULL 값도 건너뛰지 않습니다. NULL은 Set의 요소와 비교되며, NULL = NULL은 true로 평가됩니다. 이는 Set을 생성하지 않고 타입 분석에 사용하는 IgnoreSet 변형입니다.

Syntax

notNullIn(x, set)

인자

  • x — 확인할 값. - set — 값들의 집합(Set).

반환 값

x가 Set에 속하지 않으면 1을, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT notNullIn(NULL, tuple(1, NULL))
0

nullIn

도입 버전: v1.1.0

왼쪽 피연산자가 오른쪽 피연산자 Set에 포함되어 있는지 확인합니다. in과 달리 NULL 값이 무시되지 않습니다. NULL은 Set의 요소와 비교되며, NULL = NULL 표현식은 true로 평가됩니다.

문법

nullIn(x, set)

인수

  • x — 확인할 값입니다. - set — 값들로 구성된 Set입니다.

반환 값

x가 Set에 포함되어 있으면 1, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT nullIn(NULL, tuple(1, NULL))
1

nullInIgnoreSet

도입 버전: v1.1.0

왼쪽 피연산자가 오른쪽 피연산자 Set에 포함되는지 확인합니다. in과 달리 NULL 값은 건너뛰지 않습니다. NULL은 Set의 요소와 비교되며, NULL = NULL 비교 결과는 true가 됩니다. 이는 Set을 생성하지 않고 타입 분석에 사용하는 IgnoreSet의 변형입니다.

구문

nullIn(x, set)

인수

  • x — 확인할 값입니다. - set — 값의 집합입니다.

반환 값

xset에 포함되어 있으면 1을, 그렇지 않으면 0을 반환합니다. UInt8

예시

기본 사용법

SELECT nullIn(NULL, tuple(1, NULL))
1