逻辑数据类型

本主题介绍 Snowflake 支持的逻辑数据类型。

本主题内容:

数据类型

Snowflake 支持单一逻辑数据类型,即 BOOLEAN。

BOOLEAN

BOOLEAN 可以有 TRUE 或 FALSE 值。BOOLEAN 也可以有“未知”值,该值由 NULL 表示。布尔列可用于表达式(例如 SELECT 列表)以及谓词(例如 WHERE 子句)。

BOOLEAN 数据类型支持 三元逻辑

布尔转换

转换为布尔

显式转换

通过使用 TO_BOOLEANCAST 函数,您可以显式转换布尔值,从文本字符串和数字值转换为布尔值:

字符串转换:
  • 转换为 TRUE 的字符串:'true''t''yes''y''on''1'

  • 转换为 FALSE 的字符串:'false''f''no''n''off''0'

  • 转换不区分大小写。

  • 所有其他文本字符串都无法转换为布尔值。

数字转换:
  • 转换为 FALSE 的零 (0)。

  • 转换为 TRUE 的任何非零值。

隐式转换

布尔值可以从文本字符串值隐式转换为布尔值。

字符串转换:
  • “true”转换为 TRUE。

  • “false”转换为 FALSE。

字符串值不区分大小写。

数字转换:
  • 转换为 FALSE 的零 (0)。

  • 转换为 TRUE 的任何非零值。

从布尔转换

显式转换

布尔值可以显式转换为字符串值或数字值。

字符串转换:
  • TRUE 转换为“true”。

  • FALSE 转换为“false”。

数字转换:
  • TRUE 转换为 1.

  • FALSE 转换为 0.

隐式转换

字符串转换:
  • 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;

+-------+------+------+
| B     |    N | S    |
|-------+------+------|
| True  |    1 | yes  |
| False |    0 | no   |
| NULL  | NULL | NULL |
+-------+------+------+
Copy

布尔类型的表达式:

SELECT b, n, NOT b AND (n < 1) FROM test_boolean;

+-------+------+-------------------+
| B     |    N | NOT B AND (N < 1) |
|-------+------+-------------------|
| True  |    1 | False             |
| False |    0 | True              |
| NULL  | NULL | NULL              |
+-------+------+-------------------+
Copy

谓词中的布尔列:

SELECT * FROM test_boolean WHERE NOT b AND (n < 1);

+-------+---+----+
| B     | N | S  |
|-------+---+----|
| False | 0 | no |
+-------+---+----+
Copy

转换为布尔的文本:

SELECT s, TO_BOOLEAN(s) FROM test_boolean;

+------+---------------+
| S    | TO_BOOLEAN(S) |
|------+---------------|
| yes  | True          |
| no   | False         |
| NULL | NULL          |
+------+---------------+
Copy

转换为布尔的数字:

SELECT n, TO_BOOLEAN(n) FROM test_boolean;

+------+---------------+
|    N | TO_BOOLEAN(N) |
|------+---------------|
|    1 | True          |
|    0 | False         |
| NULL | NULL          |
+------+---------------+
Copy

隐式转换为文本的布尔:

SELECT 'Text for ' || s || ' is ' || b AS result FROM test_boolean;

+----------------------+
| RESULT               |
|----------------------|
| Text for yes is true |
| Text for no is false |
| NULL                 |
+----------------------+
Copy
语言: 中文