我正在使用令人沮丧的数据集,其中包含我的用户表中“活动”列的null,0、1和2值。
为什么这样做:
SELECT u.id AS LegacyContactKey,
u.first_name AS FirstName,
u.last_name AS LastName,
c.company_name AS CompanyName,
u.email AS EmailAddress,
(CASE WHEN u.active = 1 THEN 1 WHEN u.active = 2 THEN 1 ELSE 0 END) as IsMember
FROM tb_users AS u
INNER JOIN tb_company AS c ON u.company_id = c.company_id
但是不是吗?
SELECT u.id AS LegacyContactKey,
u.first_name AS FirstName,
u.last_name AS LastName,
c.company_name AS CompanyName,
u.email AS EmailAddress,
CAST((CASE WHEN u.active = 1 THEN 1 WHEN u.active = 2 THEN 1 ELSE 0 END) AS BOOLEAN) as IsMember
FROM tb_users AS u
INNER JOIN tb_company AS c ON u.company_id = c.company_id
我想将查询结果之一转换为布尔值,因此它返回true或false,但是当我添加CAST()时,我得到一个错误(在BOOLEAN附近)
正在运行MariaDB 10.3
我不认为cast()
支持布尔值。但是最简单的方法实际上是:
(u.active IN (1, 2)) as IsMember
您可以仅使用布尔表达式并为其指定列别名。
编辑:
如果NULL
是一个问题,只需将其包括在表达式中:
(u.active IN (1, 2) AND u.active IS NOT NULL) as IsMember