MariaDB/Mysql SELECT в заявлении CASE внутри CAST вызывает ошибку
Я работаю с разочаровывающим набором данных, который содержит значения 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
1 ответ
Я не думаю cast()
поддерживает логическое значение. Но самый простой способ действительно:
(u.active IN (1, 2)) as IsMember
Вы можете просто использовать логическое выражение и назначить ему псевдоним столбца.
РЕДАКТИРОВАТЬ:
Если NULL
проблема, просто включите ее в выражение:
(u.active IN (1, 2) AND u.active IS NOT NULL) as IsMember