如何在 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', '')
(我喜欢让声明中的第一项成为默认项。)
我在 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', '')
(我喜欢让声明中的第一项成为默认项。)