논리 데이터 타입

이 항목에서는 Snowflake에서 지원되는 논리 데이터 타입에 대해 설명합니다.

데이터 타입

Snowflake는 단일 논리 데이터 타입인 BOOLEAN 을 지원합니다.

BOOLEAN

BOOLEAN은 TRUE 또는 FALSE 값을 가질 수 있습니다. BOOLEAN 은 NULL 로 표시되는 UNKNOWN 값을 가질 수도 있습니다. BOOLEAN 열은 식(예: SELECT 목록)과 조건자(예: WHERE 절)에 사용할 수 있습니다.

BOOLEAN 데이터 타입에서는 3진 논리 에 대한 지원을 사용할 수 있습니다.

BOOLEAN 변환

Snowflake는 BOOLEAN 로의 변환을 지원합니다.

BOOLEAN 로 변환

BOOLEAN 이외의 값은 명시적으로 또는 암시적으로 BOOLEAN 값으로 변환할 수 있습니다.

명시적 변환

TO_BOOLEAN 또는 CAST 함수를 사용하여 특정 텍스트 문자열숫자 값을 BOOLEAN 값으로 명시적으로 변환할 수 있습니다.

문자열 변환:
  • TRUE로 변환되는 문자열: 'true', 't', 'yes', 'y', 'on', '1'.

  • FALSE로 변환되는 문자열: 'false', 'f', 'no', 'n', 'off', '0'.

  • 변환은 대/소문자를 구분하지 않습니다.

  • 다른 텍스트 문자열은 BOOLEAN 값으로 변환할 수 없습니다.

숫자 변환:
  • 제로(0)는 FALSE로 변환됩니다.

  • 0이 아닌 값은 모두 TRUE로 변환됩니다.

암시적 변환

Snowflake는 특정 텍스트 문자열과 숫자 값을 BOOLEAN 값으로 암시적으로 변환할 수 있습니다.

문자열 변환:
  • 'true' 는 TRUE 로 변환됩니다.

  • 'false' 는 FALSE 로 변환됩니다.

  • 변환은 대/소문자를 구분하지 않습니다.

숫자 변환:
  • 제로(0)는 FALSE로 변환됩니다.

  • 0이 아닌 값은 모두 TRUE로 변환됩니다.

BOOLEAN에서 변환

BOOLEAN 값을 명시적으로 또는 암시적으로 BOOLEAN 값이 아닌 값으로 변환할 수 있습니다.

명시적 변환

BOOLEAN 값을 텍스트 문자열이나 숫자 값으로 명시적으로 형 변환할 수 있습니다.

문자열 변환:
  • TRUE 는 'true' 로 변환됩니다.

  • FALSE 는 'false' 로 변환됩니다.

숫자 변환:
  • TRUE는 1 로 변환됩니다.

  • FALSE는 0 으로 변환됩니다.

암시적 변환

Snowflake는 BOOLEAN 값을 텍스트 문자열 값으로 암시적으로 변환할 수 있습니다.

문자열 변환:
  • TRUE 는 'true' 로 변환됩니다.

  • FALSE 는 'false' 로 변환됩니다.

테이블을 만들고 값을 삽입합니다.

CREATE OR REPLACE TABLE test_boolean(
  b BOOLEAN,
  n NUMBER,
  s STRING);

INSERT INTO test_boolean VALUES
  (true, 1, 'yes'),
  (false, 0, 'no'),
  (NULL, NULL, NULL);

SELECT * FROM test_boolean;
Copy
+-------+------+------+
| B     |    N | S    |
|-------+------+------|
| True  |    1 | yes  |
| False |    0 | no   |
| NULL  | NULL | NULL |
+-------+------+------+

다음 쿼리에는 BOOLEAN 타입의 식이 포함되어 있습니다.

SELECT b, n, NOT b AND (n < 1) FROM test_boolean;
Copy
+-------+------+-------------------+
| B     |    N | NOT B AND (N < 1) |
|-------+------+-------------------|
| True  |    1 | False             |
| False |    0 | True              |
| NULL  | NULL | NULL              |
+-------+------+-------------------+

다음 예제에서는 조건자에 BOOLEAN 열을 사용합니다.

SELECT * FROM test_boolean WHERE NOT b AND (n < 1);
Copy
+-------+---+----+
| B     | N | S  |
|-------+---+----|
| False | 0 | no |
+-------+---+----+

다음 예제는 텍스트 값을 BOOLEAN 값으로 형 변환합니다. 이 예제에서는 SYSTEM$TYPEOF 를 사용하여 변환 후 값의 유형을 표시합니다.

SELECT s,
       TO_BOOLEAN(s),
       SYSTEM$TYPEOF(TO_BOOLEAN(s))
  FROM test_boolean;
Copy
+------+---------------+------------------------------+
| S    | TO_BOOLEAN(S) | SYSTEM$TYPEOF(TO_BOOLEAN(S)) |
|------+---------------+------------------------------|
| yes  | True          | BOOLEAN[SB1]                 |
| no   | False         | BOOLEAN[SB1]                 |
| NULL | NULL          | BOOLEAN[SB1]                 |
+------+---------------+------------------------------+

다음 예제는 숫자 값을 BOOLEAN 값으로 형 변환합니다.

SELECT n,
       TO_BOOLEAN(n),
       SYSTEM$TYPEOF(TO_BOOLEAN(n))
  FROM test_boolean;
Copy
+------+---------------+------------------------------+
| N    | TO_BOOLEAN(N) | SYSTEM$TYPEOF(TO_BOOLEAN(N)) |
|------+---------------+------------------------------|
| 1    | True          | BOOLEAN[SB1]                 |
| 0    | False         | BOOLEAN[SB1]                 |
| NULL | NULL          | BOOLEAN[SB1]                 |
+------+---------------+------------------------------+

이 예제에서 Snowflake는 BOOLEAN 값을 텍스트 값으로 암시적으로 변환합니다.

SELECT 'Text for ' || s || ' is ' || b AS result,
       SYSTEM$TYPEOF('Text for ' || s || ' is ' || b) AS type_of_result
  FROM test_boolean;
Copy
+----------------------+------------------------+
| RESULT               | TYPE_OF_RESULT         |
|----------------------+------------------------|
| Text for yes is true | VARCHAR(16777216)[LOB] |
| Text for no is false | VARCHAR(16777216)[LOB] |
| NULL                 | VARCHAR(16777216)[LOB] |
+----------------------+------------------------+