MariaDB / Mysql SELECT на CASE Оператор внутри CAST вызывает ошибку - PullRequest
0 голосов
/ 18 октября 2019

Я работаю с разочаровывающим набором данных, который содержит нулевые, 0, 1 и 2 значения для столбца 'active' в моей таблице пользователей.

Почему это работает:

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 Ответ

1 голос
/ 18 октября 2019

Я не думаю, что cast() поддерживает логическое значение. Но самый простой метод на самом деле:

   (u.active IN (1, 2)) as IsMember

Вы можете просто использовать логическое выражение и присвоить ему псевдоним столбца.

РЕДАКТИРОВАТЬ:

Если NULLвопрос, просто включите его в выражение:

   (u.active IN (1, 2) AND u.active IS NOT NULL) as IsMember
...