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
Другие вопросы по тегам