0

我在 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)

但这对我来说很冗长

4

2 回答 2

1

更改默认设置,并ENUM使其''表示“未指定”。

那是:

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

然后这个工作:

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

(我喜欢将声明中的第一项设为默认值。)

于 2019-11-24T02:04:20.933 回答
0

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

SELECT *
FROM users
WHERE IFNULL(country, 'unspecified') IN ('France', 'Suisse', 'unspecified');
于 2019-11-21T12:19:31.357 回答