逻辑数据类型¶
本主题介绍 Snowflake 支持的逻辑数据类型。
本主题内容:
数据类型¶
Snowflake 支持单一逻辑数据类型,即 BOOLEAN。
BOOLEAN¶
BOOLEAN 可以有 TRUE 或 FALSE 值。BOOLEAN 也可以有“未知”值,该值由 NULL 表示。布尔列可用于表达式(例如 SELECT 列表)以及谓词(例如 WHERE 子句)。
BOOLEAN 数据类型支持 三元逻辑。
布尔转换¶
转换为布尔¶
显式转换¶
通过使用 TO_BOOLEAN 或 CAST 函数,您可以显式转换布尔值,从文本字符串和数字值转换为布尔值:
- 字符串转换:
转换为 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 |
+-------+------+------+
布尔类型的表达式:
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 | +-------+------+-------------------+
谓词中的布尔列:
SELECT * FROM test_boolean WHERE NOT b AND (n < 1); +-------+---+----+ | B | N | S | |-------+---+----| | False | 0 | no | +-------+---+----+
转换为布尔的文本:
SELECT s, TO_BOOLEAN(s) FROM test_boolean; +------+---------------+ | S | TO_BOOLEAN(S) | |------+---------------| | yes | True | | no | False | | NULL | NULL | +------+---------------+
转换为布尔的数字:
SELECT n, TO_BOOLEAN(n) FROM test_boolean; +------+---------------+ | N | TO_BOOLEAN(N) | |------+---------------| | 1 | True | | 0 | False | | NULL | NULL | +------+---------------+
隐式转换为文本的布尔:
SELECT 'Text for ' || s || ' is ' || b AS result FROM test_boolean; +----------------------+ | RESULT | |----------------------| | Text for yes is true | | Text for no is false | | NULL | +----------------------+