BOOLEAN

最近更新时间:2026-05-06 16:28:12

我的收藏
BOOLEAN 数据类型用于 CREATE TABLEALTER TABLE 语句中,表示单一的“真/假”选择。

语法

CREATE TABLE 语句的列定义中:
column_name BOOLEAN

取值范围

取值:TRUEFALSE
书写规范:字面量 TRUEFALSE 不需要加引号。你可以使用大写、小写或混写。
查询显示:TCHouse-X 遵循 MySQL 协议规范,布尔值以整数表示:
1:表示 TRUE
0:表示 FALSE

类型转换

TCHouse-X 不会自动将任何其他类型隐式转换为 BOOLEAN。所有转换必须使用 CAST() 函数进行显式调用。

数值类型与 BOOLEAN 的转换

从数值转 BOOLEAN:任何整数或浮点类型都可以转换为 BOOLEAN。0 表示 false,任何非零值都会转换为 true
SELECT CAST(42 AS BOOLEAN) AS nonzero_int,
CAST(99.44 AS BOOLEAN) AS nonzero_decimal,
CAST(000 AS BOOLEAN) AS zero_int,
CAST(0.0 AS BOOLEAN) AS zero_decimal;
-- 结果依次为: 1, 1, 0, 0
从 BOOLEAN 转数值:结果将变为 1 (true) 或 0 (false)。
SELECT CAST(true AS INT) AS true_int,
CAST(false AS DOUBLE) AS false_double;
-- 结果依次为: 1, 0
DECIMAL 类型:可以将 DECIMAL 转换为 BOOLEAN(遵循非零即真的规则),但不能直接将 BOOLEAN 转换为 DECIMAL
select cast(cast (1 as decimal(3,1)) as boolean); -- 结果为1
select cast(true as decimal); -- 报错

其他类型转换

STRING:不能将 STRING 转换为 BOOLEAN。但可以将 BOOLEAN 转换为 STRING,其中 true 返回 'true',false 返回 'false'。
select cast('abc' as boolean); -- 报错
select cast(false as string); -- 返回 'false'
select cast(true as string); -- 返回 'true'
TIMESTAMP:虽然支持互转,但结果通常没有实际意义。

NULL 值处理

如果表达式中的任何参数为 NULL,则该类型的表达式结果也为 NULL