> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 널 허용 값 관련 함수 문서

# 널 허용 값 관련 함수

{/*AUTOGENERATED_START*/}

<div id="assumeNotNull">
  ## assumeNotNull
</div>

도입 버전: v1.1.0

[`Nullable`](/ko/reference/data-types/nullable) 타입 값에 대응하는 non-`Nullable` 값을 반환합니다.
원래 값이 `NULL`이면 임의의 결과가 반환될 수 있습니다.

관련 항목: 함수 [`ifNull`](#ifNull) 및 [`coalesce`](#coalesce).

**구문**

```sql theme={null}
assumeNotNull(x)
```

**인수**

* `x` — 임의의 널 허용 타입의 원래 값입니다. [`Nullable(T)`](/ko/reference/data-types/nullable)

**반환 값**

원래 값이 `NULL`이 아니면 널이 아닌 값을 반환하고, 입력 값이 `NULL`이면 임의의 값을 반환합니다. [`Any`](/ko/reference/data-types)

**예시**

**사용 예시**

```sql title=Query theme={null}
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 table;
SELECT toTypeName(assumeNotNull(y)) FROM t_null;
```

```response title=Response theme={null}
┌─assumeNotNull(y)─┐
│                0 │
│                3 │
└──────────────────┘
┌─toTypeName(assumeNotNull(y))─┐
│ Int8                         │
│ Int8                         │
└──────────────────────────────┘
```

<div id="coalesce">
  ## coalesce
</div>

도입 버전: v1.1.0

가장 왼쪽의 `NULL`이 아닌 인수를 반환합니다.

**구문**

```sql theme={null}
coalesce(x[, y, ...])
```

**인수**

* `x[, y, ...]` — 복합 타입이 아닌 매개변수를 개수 제한 없이 받을 수 있습니다. 모든 매개변수는 서로 호환되는 데이터 타입이어야 합니다. [`Any`](/ko/reference/data-types)

**반환 값**

첫 번째 비-`NULL` 인수를 반환합니다. 모든 인수가 `NULL`이면 `NULL`을 반환합니다. [`Any`](/ko/reference/data-types) 또는 [`NULL`](/ko/reference/syntax#null)

**예시**

**사용 예시**

```sql title=Query theme={null}
-- 고객에게 연락할 수 있는 여러 방법을 지정할 수 있는 연락처 목록을 고려합니다.

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);

-- mail과 phone 필드는 String 유형이지만, telegram 필드는 UInt32 유형이므로 String으로 변환해야 합니다.

-- 연락처 목록에서 고객의 첫 번째 유효한 연락 방법을 가져옵니다.

SELECT name, coalesce(mail, phone, CAST(telegram,'Nullable(String)')) FROM aBook;
```

```response title=Response theme={null}
┌─name─────┬─coalesce(mail, phone, CAST(telegram, 'Nullable(String)'))─┐
│ client 1 │ 123-45-67                                                 │
│ client 2 │ ᴺᵁᴸᴸ                                                      │
└──────────┴───────────────────────────────────────────────────────────┘
```

<div id="firstNonDefault">
  ## firstNonDefault
</div>

도입 버전: v25.9.0

여러 인수 중 기본값이 아닌 첫 번째 값을 반환합니다

**구문**

```sql theme={null}
firstNonDefault(arg1[, arg2[ ...]])
```

**인수**

* `arg1` — 확인할 첫 번째 인수 - `arg2` — 확인할 두 번째 인수 - `...` — 추가로 확인할 인수

**반환 값**

결과 유형은 모든 인수의 supertype입니다

**예시**

**정수**

```sql title=Query theme={null}
SELECT firstNonDefault(0, 1, 2)
```

```response title=Response theme={null}
1
```

**문자열**

```sql title=Query theme={null}
SELECT firstNonDefault('', 'hello', 'world')
```

```response title=Response theme={null}
'hello'
```

**NULL 값**

```sql title=Query theme={null}
SELECT firstNonDefault(NULL, 0 :: UInt8, 1 :: UInt8)
```

```response title=Response theme={null}
1
```

**널 허용 0값**

```sql title=Query theme={null}
SELECT firstNonDefault(NULL, 0 :: Nullable(UInt8), 1 :: Nullable(UInt8))
```

```response title=Response theme={null}
0
```

<div id="ifNull">
  ## ifNull
</div>

지원 시작 버전: v1.1.0

첫 번째 인수가 `NULL`이면 대체 값을 반환합니다.

**구문**

```sql theme={null}
ifNull(x, alt)
```

**인수**

* `x` — `NULL` 여부를 확인할 값입니다. [`Any`](/ko/reference/data-types)
* `alt` — `x`가 `NULL`인 경우 함수가 반환할 값입니다. [`Any`](/ko/reference/data-types)

**반환 값**

`x`가 `NULL`이 아니면 `x`의 값을, 그렇지 않으면 `alt`를 반환합니다. [`Any`](/ko/reference/data-types)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT ifNull('a', 'b'), ifNull(NULL, 'b');
```

```response title=Response theme={null}
┌─ifNull('a', 'b')─┬─ifNull(NULL, 'b')─┐
│ a                │ b                 │
└──────────────────┴───────────────────┘
```

<div id="isNotNull">
  ## isNotNull
</div>

도입 버전: v1.1.0

인수가 `NULL`이 아닌지 확인합니다.

참고: 연산자 [`IS NOT NULL`](/ko/reference/operators#is_not_null).

**구문**

```sql theme={null}
isNotNull(x)
```

**인수**

* `x` — 복합형이 아닌 데이터 타입의 값입니다. [`Any`](/ko/reference/data-types)

**반환 값**

`x`가 `NULL`이 아니면 `1`을 반환하고, 그렇지 않으면 `0`을 반환합니다. [`UInt8`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
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);
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

<div id="isNull">
  ## isNull
</div>

도입 버전: v1.1.0

인수가 `NULL`인지 확인합니다.

참고: 연산자 [`IS NULL`](/ko/reference/operators#is_null).

**구문**

```sql theme={null}
isNull(x)
```

**인수**

* `x` — 복합형이 아닌 데이터 타입의 값입니다. [`Any`](/ko/reference/data-types)

**반환 값**

`x`가 `NULL`이면 `1`을, 그렇지 않으면 `0`을 반환합니다. [`UInt8`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
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);
```

```response title=Response theme={null}
┌─x─┐
│ 1 │
└───┘
```

<div id="isNullable">
  ## isNullable
</div>

도입 버전: v22.7.0

인수의 데이터 타입이 `Nullable`(즉, `NULL` 값을 허용하는 데이터 타입)인지 확인합니다.

**구문**

```sql theme={null}
isNullable(x)
```

**인수**

* `x` — 모든 데이터 타입의 값입니다. [`Any`](/ko/reference/data-types)

**반환 값**

`x`가 `Nullable` 데이터 타입이면 `1`을, 그렇지 않으면 `0`을 반환합니다. [`UInt8`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
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;
```

```response title=Response theme={null}
┌───isNullable(ordinary_col)──┬───isNullable(nullable_col)──┐
│                           0 │                           1 │
│                           0 │                           1 │
│                           0 │                           1 │
└─────────────────────────────┴─────────────────────────────┘
```

<div id="isZeroOrNull">
  ## isZeroOrNull
</div>

도입된 버전: v20.3.0

인수가 `0` 또는 `NULL`인지 확인합니다.

**구문**

```sql theme={null}
isZeroOrNull(x)
```

**인수**

* `x` — 숫자 값입니다. [`UInt`](/ko/reference/data-types/int-uint)

**반환 값**

`x`가 `NULL`이거나 `0`이면 `1`을 반환하고, 그렇지 않으면 `0`을 반환합니다. [`UInt8/16/32/64`](/ko/reference/data-types/int-uint) 또는 [`Float32/Float64`](/ko/reference/data-types/float)

**예시**

**사용 예시**

```sql title=Query theme={null}
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);
```

```response title=Response theme={null}
┌─x─┐
│ 1 │
│ 2 │
└───┘
```

<div id="nullIf">
  ## nullIf
</div>

도입 버전: v1.1.0

두 인수가 같으면 `NULL`을 반환합니다.

**구문**

```sql theme={null}
nullIf(x, y)
```

**인수**

* `x` — 첫 번째 값입니다. [`Any`](/ko/reference/data-types)
* `y` — 두 번째 값입니다. [`Any`](/ko/reference/data-types)

**반환 값**

두 인수가 같으면 `NULL`을 반환하고, 그렇지 않으면 첫 번째 인수를 반환합니다. [`NULL`](/ko/reference/syntax#null) 또는 [`Nullable(x)`](/ko/reference/data-types/nullable)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT nullIf(1, 1), nullIf(1, 2);
```

```response title=Response theme={null}
┌─nullIf(1, 1)─┬─nullIf(1, 2)─┐
│         ᴺᵁᴸᴸ │            1 │
└──────────────┴──────────────┘
```

<div id="toNullable">
  ## toNullable
</div>

도입 버전: v1.1.0

주어진 인수의 유형을 `Nullable`로 변환합니다.

**구문**

```sql theme={null}
toNullable(x)
```

**인수**

* `x` — 복합 타입이 아닌 임의의 값입니다. [`Any`](/ko/reference/data-types)

**반환 값**

입력 값을 `널 허용(Nullable)` 타입으로 반환합니다. [`Nullable(Any)`](/ko/reference/data-types/nullable)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT toTypeName(10), toTypeName(toNullable(10));
```

```response title=Response theme={null}
┌─toTypeName(10)─┬─toTypeName(toNullable(10))─┐
│ UInt8          │ Nullable(UInt8)            │
└────────────────┴────────────────────────────┘
```
