assumeNotNull
도입 버전: v1.1.0
널 허용 타입 값에 대응하는 non-널 허용 값을 반환합니다.
원래 값이 NULL이면 임의의 결과가 반환될 수 있습니다.
구문
assumeNotNull(x)인수
x— 임의의 널 허용 타입의 원래 값입니다.Nullable(T)
반환 값
원래 값이 NULL이 아니면 널이 아닌 값을 반환하고, 입력 값이 NULL이면 임의의 값을 반환합니다. Any
예시
사용 예시
CREATE TABLE t_null (x Int8, y Nullable(Int8))
ENGINE=MergeTree()
ORDER BY x;
INSERT INTO t_null VALUES (1, NULL), (2, 3);
SELECT assumeNotNull(y) FROM t_null;
SELECT toTypeName(assumeNotNull(y)) FROM t_null;┌─assumeNotNull(y)─┐
│ 0 │
│ 3 │
└──────────────────┘
┌─toTypeName(assumeNotNull(y))─┐
│ Int8 │
│ Int8 │
└──────────────────────────────┘coalesce
도입 버전: v1.1.0
가장 왼쪽의 NULL이 아닌 인수를 반환합니다.
구문
coalesce(x[, y, ...])인수
x[, y, ...]— 복합 타입이 아닌 매개변수를 개수 제한 없이 받을 수 있습니다. 모든 매개변수는 서로 호환되는 데이터 타입이어야 합니다.Any
반환 값
첫 번째 비-NULL 인수를 반환합니다. 모든 인수가 NULL이면 NULL을 반환합니다. Any 또는 NULL
예시
사용 예시
-- Consider a list of contacts that may specify multiple ways to contact a customer.
CREATE TABLE aBook
(
name String,
mail Nullable(String),
phone Nullable(String),
telegram Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO aBook VALUES ('client 1', NULL, '123-45-67', 123), ('client 2', NULL, NULL, NULL);
-- The mail and phone fields are of type String, but the telegram field is UInt32 so it needs to be converted to String.
-- Get the first available contact method for the customer from the contact list
SELECT name, coalesce(mail, phone, CAST(telegram,'Nullable(String)')) FROM aBook;┌─name─────┬─coalesce(mail, phone, CAST(telegram, 'Nullable(String)'))─┐
│ client 1 │ 123-45-67 │
│ client 2 │ ᴺᵁᴸᴸ │
└──────────┴───────────────────────────────────────────────────────────┘firstNonDefault
도입 버전: v25.9.0
여러 인수 중 기본값이 아닌 첫 번째 값을 반환합니다
구문
firstNonDefault(arg1[, arg2[ ...]])인수
arg1— 확인할 첫 번째 인수 -arg2— 확인할 두 번째 인수 -...— 추가로 확인할 인수
반환 값
결과 유형은 모든 인수의 supertype입니다
예시
정수
SELECT firstNonDefault(0, 1, 2)1문자열
SELECT firstNonDefault('', 'hello', 'world')helloNULL 값
SELECT firstNonDefault(NULL, 0 :: UInt8, 1 :: UInt8)1널 허용 0값
SELECT firstNonDefault(NULL, 0 :: Nullable(UInt8), 1 :: Nullable(UInt8))0ifNull
지원 시작 버전: v1.1.0
첫 번째 인수가 NULL이면 대체 값을 반환합니다.
구문
ifNull(x, alt)인수
반환 값
x가 NULL이 아니면 x의 값을, 그렇지 않으면 alt를 반환합니다. Any
예시
사용 예시
SELECT ifNull('a', 'b'), ifNull(NULL, 'b');┌─ifNull('a', 'b')─┬─ifNull(NULL, 'b')─┐
│ a │ b │
└──────────────────┴───────────────────┘isNotNull
도입 버전: v1.1.0
인수가 NULL이 아닌지 확인합니다.
참고: 연산자 IS NOT NULL.
구문
isNotNull(x)인수
x— 복합형이 아닌 데이터 타입의 값입니다.Any
반환 값
x가 NULL이 아니면 1을 반환하고, 그렇지 않으면 0을 반환합니다. UInt8
예시
사용 예시
CREATE TABLE t_null
(
x Int32,
y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO t_null VALUES (1, NULL), (2, 3);
SELECT x FROM t_null WHERE isNotNull(y);┌─x─┐
│ 2 │
└───┘isNull
도입 버전: v1.1.0
인수가 NULL인지 확인합니다.
참고: 연산자 IS NULL.
구문
isNull(x)인수
x— 복합형이 아닌 데이터 타입의 값입니다.Any
반환 값
x가 NULL이면 1을, 그렇지 않으면 0을 반환합니다. UInt8
예시
사용 예시
CREATE TABLE t_null
(
x Int32,
y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO t_null VALUES (1, NULL), (2, 3);
SELECT x FROM t_null WHERE isNull(y);┌─x─┐
│ 1 │
└───┘isNullable
도입 버전: v22.7.0
인수의 데이터 타입이 널 허용(즉, NULL 값을 허용하는 데이터 타입)인지 확인합니다.
구문
isNullable(x)인수
x— 모든 데이터 타입의 값입니다.Any
반환 값
x가 널 허용 데이터 타입이면 1을, 그렇지 않으면 0을 반환합니다. UInt8
예시
사용 예시
CREATE TABLE tab (
ordinary_col UInt32,
nullable_col Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO tab (ordinary_col, nullable_col) VALUES (1,1), (2, 2), (3,3);
SELECT isNullable(ordinary_col), isNullable(nullable_col) FROM tab;┌─isNullable(ordinary_col)─┬─isNullable(nullable_col)─┐
│ 0 │ 1 │
│ 0 │ 1 │
│ 0 │ 1 │
└──────────────────────────┴──────────────────────────┘isZeroOrNull
도입된 버전: v20.3.0
인수가 0 또는 NULL인지 확인합니다.
구문
isZeroOrNull(x)인수
x— 숫자 값입니다.UInt
반환 값
x가 NULL이거나 0이면 1을 반환하고, 그렇지 않으면 0을 반환합니다. UInt8/16/32/64 또는 Float32/Float64
예시
사용 예시
CREATE TABLE t_null
(
x Int32,
y Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY tuple();
INSERT INTO t_null VALUES (1, NULL), (2, 0), (3, 3);
SELECT x FROM t_null WHERE isZeroOrNull(y);┌─x─┐
│ 1 │
│ 2 │
└───┘nullIf
도입 버전: v1.1.0
두 인수가 같으면 NULL을 반환합니다.
구문
nullIf(x, y)인수
반환 값
두 인수가 같으면 NULL을 반환하고, 그렇지 않으면 첫 번째 인수를 반환합니다. NULL 또는 Nullable(x)
예시
사용 예시
SELECT nullIf(1, 1), nullIf(1, 2);┌─nullIf(1, 1)─┬─nullIf(1, 2)─┐
│ ᴺᵁᴸᴸ │ 1 │
└──────────────┴──────────────┘toNullable
도입 버전: v1.1.0
주어진 인수의 유형을 널 허용로 변환합니다.
구문
toNullable(x)인수
x— 복합 타입이 아닌 임의의 값입니다.Any
반환 값
입력 값을 널 허용 타입으로 반환합니다. Nullable(Any)
예시
사용 예시
SELECT toTypeName(10), toTypeName(toNullable(10));┌─toTypeName(10)─┬─toTypeName(toNullable(10))─┐
│ UInt8 │ Nullable(UInt8) │
└────────────────┴────────────────────────────┘