如何在 select 上将 NULL 包含到 ENUM 中?

How to include NULL into ENUM on select?

我在 ENUM 类型中的字段国家:(mysql - mariaDB)

`country` enum('France','Belgique','Suisse') DEFAULT NULL;

有没有办法将 NULL 包含到 select 中?

Select * from users where country in ('France','Suisse', NULL, '') ?

我想检索来自法国、瑞士或未指定国家 (NULL) 的用户

当然我还能用:

Select * from users where (country in ('France','Suisse') OR country is NULL)

但这对我来说太冗长了

您可以使用 IFNULL() 函数指定一个与 IN 列表中的值之一相匹配的默认值。可以用ENUM中实际不存在的值来区分

SELECT *
FROM users
WHERE IFNULL(country, 'unspecified') IN ('France', 'Suisse', 'unspecified');

更改 ENUM,使 '' 成为默认值,使其成为 'not specified'。

即:

ENUM ('', 'France','Belgique','Suisse') NOT NULL DEFAULT '';

然后这有效:

in ('France','Suisse', '')

(我喜欢让声明中的第一项成为默认项。)